为另一个模拟构造函数提供模拟?

时间:2017-01-26 05:27:53

标签: unit-testing testing mocking phpunit tdd

我很好奇我是否正在做这件事,因为我刚接触测试。

我有两项服务(目前为止),AuthServiceCommentServiceCommentService取决于AuthService,而AuthService取决于第三方类(\SlimSession\Helper)。

AuthService的单元测试中,我只是模拟\SlimSession\Helper并将模拟提供给构造函数。

现在,在我对CommentService的测试中,我嘲笑AuthService并将其提供给CommentService的构造函数。但我还必须再次创建\SlimSession\Helper的模拟,以将其提供给我的模拟AuthService的构造函数。

$session = $this->getMockBuilder('\SlimSession\Helper')
  ->getMock();

$auth = $this->getMockBuilder('\App\Service\AuthService')
  ->setConstructorArgs([$session])
  ->getMock();

$auth->expects($this->any())->method('isLoggedIn')->willReturn(false);
$auth->expects($this->any())->method('getLoggedInUserId')->willReturn(0);

这是对的吗?向模拟对象提供(模拟)依赖关系似乎有点愚蠢,因为它无论如何都不会使用该依赖。

我的问题特别关注PHPUnit,但我想一般可以进行单元测试。

0 个答案:

没有答案