【发布时间】:2016-10-20 18:33:30
【问题描述】:
我有一个服务MoneyMover 可以改变两个实体的状态:从sender 减少amount 的钱并将这个金额添加到receiver。
我还没有实现。根据 BDD,我正在为此功能编写规范:
function it_should_reduce_balance_of_sender(User $sender, User $receiver)
{
$sender->getBalance()->willReturn(5);
$this->moveFromSenderToReciever($sender, $receiver, 5);
$sender->getBalance()->shouldReturn(0);
}
但我只能测试我的服务状态,而不是任何使用的预言对象。所以这个规范抛出了一个致命的错误:
调用未定义的方法 Prophecy\Prophecy\MethodProphecy::shouldReturn()
如何测试实体的状态变化?
我知道我可以使用类似的东西:
$sender->getBalance()->shouldBeCalled()->willReturn(5);
$sender->setBalance(0)->shouldBeCalled();
$this->moveFromSenderToReceiver($sender, $reciever, 5);
但如果我只想测试状态是否已更改呢?
【问题讨论】:
标签: php unit-testing bdd phpspec