Symfony Phpspec返回错误值

Symfony Phpspec返回错误值,symfony,phpspec,Symfony,Phpspec,我创建了注册服务,我想测试这个方法。在浏览器中,var_dump返回true,phpspec返回false。。为什么?有什么想法吗 服务: Phpspec: 请帮助。您正在尝试从模拟对象获取结果 测试此方法的最佳方法是在模拟对象上使用应调用断言进行测试 这不是单元测试,而是功能/验收测试。您需要存根或模拟所有依赖项: function it_check_user_exist_in_system( Registry $doctrine, ObjectRep

我创建了注册服务,我想测试这个方法。在浏览器中,var_dump返回true,phpspec返回false。。为什么?有什么想法吗

服务: Phpspec:


请帮助。

您正在尝试从模拟对象获取结果

测试此方法的最佳方法是在模拟对象上使用应调用断言进行测试


这不是单元测试,而是功能/验收测试。

您需要存根或模拟所有依赖项:

    function it_check_user_exist_in_system(
        Registry $doctrine, 
        ObjectRepository $repository,
        User $user
    )
    {
        $doctrine->getManager()->willReturn($doctrine);
        $doctrine->getRepository('AcmeUserBundle:User')->willReturn($repository)

        $repository->findOneBy(array('username'=>'user1'))->willReturn($user);

        $this->checkUser('user1')->shouldReturn(true);
    }

为什么不是单元测试?它是服务的一部分,所以应该是单元。这里您的SUS是RegisterTest类,您正在测试它的行为,因此您必须模拟它的协作者。如果您需要测试一个服务,那么它不是一个单元测试,正如nathanmac所说,这将是一个功能/验收,我建议使用Behat进行测试。如果存储库发现user1返回true,但如果存储库未发现user2返回true。。怎么了?在这种情况下:如果用户未找到注册表$doctor,ObjectRepository$repository,函数返回\u false\u{$doctrine->getManager->willReturn$doctrine;$doctrine->getRepository'AcmeUserBundle:User'->willReturn$repository$repository->findOneByarray'username'=>user1'->willReturnnull;$this->checkUser'user1'->shouldReturnfalse;}谢谢兄弟。工作:我忘记了willReturnnull;:如果我的答案有帮助,请选择它。谢谢。好。最后一个问题。我尝试测试peresit层,我的服务是否保存用户。规范给我100%,但错误调用未定义的方法Prophecy\Prophecy\MethodProphecy::persist me测试正确或失败为什么?