phpunit mock不计算函数调用

phpunit mock不计算函数调用,php,testing,mocking,phpunit,Php,Testing,Mocking,Phpunit,我有一个单元测试,其中我创建了一个模拟对象: $resetTokenManagerStub=$this->getMockBuilder(ObjectManager::class)->getMock(); 我将其作为另一个模拟对象的返回值 $managerRegistryStub->method('getManagerForClass')->将返回($resetTokenManagerStub); 我检查是否只调用了一次: $resetTokenManagerStub->expects($th

我有一个单元测试,其中我创建了一个模拟对象:

$resetTokenManagerStub=$this->getMockBuilder(ObjectManager::class)->getMock();
我将其作为另一个模拟对象的返回值

$managerRegistryStub->method('getManagerForClass')->将返回($resetTokenManagerStub);
我检查是否只调用了一次:

$resetTokenManagerStub->expects($this->once())->method('persist');
如果我在实际单元中的调用之前放置一个var_dump,我会看到我在那里传递了代码,并且存根是
resetTokenManagerStub
,但测试结果仍然是:

出现1次故障:
1) App\Tests\Service\UserServiceTest::testGeneratePasswordResetToken,数据集为0(模拟用户对象(…),“generatedToken”)
调用1次时,方法名称等于“persist”的预期失败。
方法应被调用1次,实际调用0次。
为什么不算电话费呢?是因为我将它用作另一个模拟的返回值吗?调用
getManagerForClass()
时得到的对象与unittest中的对象相同。我在上面做了一个
ar_dump
,两个看起来都一样:


对象(模拟对象管理器)#26(4){
...
对象(模拟对象管理器)#26(4){
...

我在这里做错了什么?

我又一次愚蠢了。很抱歉,这篇文章。这就像橡皮鸭法。我挣扎了一个小时,当我把它提交给论坛时,我看到了我做错了什么

$resetTokenManagerStub->expects($this->once())->方法('persist');
行在实际函数调用之后被调用