1
我试图让我的头脑围绕测试功能和最大限度地减少断言的想法。单元测试服务方法 - 如何声明
所以可以说我有这样的服务方法:
public void TransferFunds(int debitedId, int creditedId, Sum funds)
{
Account debited = accountRepository.Get(debitedId);
Account credited = accountRepository.Get(creditedId);
debited.Debit(Sum);
credited.Credit(Sum);
accountRepository.Update(debited);
accountRepository.Update(credited);
}
我的单元测试,我相信这时应一分为二,测试一个账户的计入和其他的借记。但是,我是否应该在每个帐户当前状态上进行断言,以验证总和是否已被添加/扣除 - 或者这是对我的帐户模型的测试?如果是这样,我应该断言什么?该更新被称为?这不验证功能...
任何人有一个想法?
Danny- 感谢您的及时答复! 所以你看到它的方式将只有2个断言: debited.AssertWasCalled(x => x.Debit(sum)); credited.AssertWasCalled(x => x.Credit(sum)); 对accountRepository没有断言(accountRepository.AssertWasCalled(r => r.Update(credited));或对于此事的借方) 是的,这很有道理:) 谢谢! – nieve 2010-08-03 09:30:30
正如我所说,我不熟悉您使用的语言或框架,但在Java/jMock中,我会执行以下操作: *制作两个模拟帐户 *制作一个模拟AccountRepository *“允许” AccountRepository在请求时用正确的ID返回账户(我不会“要求”这个,因为它不是我们试图测试的功能) *声明在第一个账户上使用正确的Sum *声明Credit方法在第二个账户上以正确的总和 – dty 2010-08-03 12:00:13