我有一个创建模拟对象的单元测试:
$resetTokenmanagerStub = $this->getMockBuilder(ObjectManager::class)->getMock();
我将此作为另一个模拟对象的返回值
$managerRegistryStub->method('getManagerForClass')->willReturn($resetTokenmanagerStub);
我检查一次是否被正确调用:
$resetTokenmanagerStub->expects($this->once())->method('persist');
如果我在实际单元中的调用之前放置了一个var_dump,我看到我在那里传递了代码,并且存根为resetTokenmanagerStub
,但测试结果仍然是:
There was 1 failure:
1) App\Tests\Service\UserServiceTest::testGeneratePasswordResetToken with data set #0 (Mock_User_a375caf8 Object (...),'generatedToken')
Expectation failed for method name is equal to 'persist' when invoked 1 time(s).
Method was expected to be called 1 times,actually called 0 times.
为什么不计算通话次数?是否因为我将其用作另一个模拟的返回值?调用getManagerForClass()
时得到的对象与单元测试中的对象相同。我在上面做了ar_dump
,看起来都一样:
object(Mock_ObjectManager_142d72a2)#26 (4) {
...
object(Mock_ObjectManager_142d72a2)#26 (4) {
...
我在这里做什么错了?