【发布时间】:2011-12-09 23:51:01
【问题描述】:
我想在我的所有测试中都有一个模拟对象,所以我尝试在 setUpBeforeClass() 方法中创建它,但是这个方法是静态的,所以 getMockBuilder 必须像这样静态调用:
public static function setUpBeforeClass() {
self::mocked_object = self::getMockBuilder('MockedClass')
->disableOriginalConstructor()
->getMock();
}
问题是getMockBuilder不能被静态调用:
Argument 1 passed to PHPUnit_Framework_MockObject_MockBuilder::__construct() must be an instance of PHPUnit_Framework_TestCase, null given
有没有机会在 setUpBeforeClass 方法中构建模拟对象,还是每次测试前我都必须构建它(在 public function setUp() 方法中)? p>
【问题讨论】:
-
你为什么需要这个模拟?你不能在常规设置方法或测试中设置它吗?如果您要为模拟设置期望,您不希望它只创建一次,而是针对每个测试。
-
mocked_object 的方法总是会返回相同的结果,所以这就是为什么我认为最好只实例化一次......无论如何,我可以在 setup 方法中创建它,但我想知道是否它也可以在 setUpBeforeClass 中创建。
-
不确定是否可行,但我认为这是不好的做法,因为您希望每次隔离测试都使用干净的stub。
标签: php unit-testing phpunit