一个类中的一个方法调用其他的方法,如何分别进行单元测试? mock 可行吗?
如下代码
class A
{
public function demo()
{
$demo2 = $this->demo2();
$demo3 = $this->demo3();
return $demo2 + $demo3;
}
public function demo2()
{
// ....
}
public function demo3()
{
// ....
}
}
mock 可以模拟一个类中的方法,这样可以用来方便的测试另外一个类的方法,但是相互调用的两个方法在一个类中,有没有比较好的办法呢?
已经在 stackoverflow 找到 答案 ,好像自己在做广告
<?php
class User {
public function years()
{
return floor($this->months() / 12);
}
public function months()
{
// Database call or anything else, it's a black box !
}
}
class UserTest extends TestCase {
public function testYearsReturnTheNumberOfYears()
{
$user = \Mockery::mock('User[months]');
$user->shouldReceive('months')->andReturn(18);
assertEquals(1, $user->years());
}
}
推荐文章: