单元测试服务方法 - 如何断言

时间:2010-08-03 09:02:58

标签: unit-testing

我试图了解测试功能和减少断言数量的想法。

所以我想说我有这样一种服务方法:

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);
}

我的单位测试我认为应该分成两部分,测试一个帐户的贷记和另一个帐户的借记。但是,我应该在每个帐户上声明当前状态,验证已添加/扣除的金额 - 或者这是我的帐户模型的测试?如果是这样,我应该断言什么?该更新被称为?这不验证功能...

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

如果您测试结果(即最终余额),那么您实际上也在测试帐户对象,这些对象未在此处进行测试,因此您应尽量避免这样做。

在这种情况下,我希望Account是一个你可以嘲笑的界面。我不确定你使用的语言(看起来可能是C#)。在Java中,我会使用接口和jMock来执行此操作。

然后,断言TransferFunds方法在右侧帐户上使用正确的Sum调用Debit,并在右侧帐户上使用正确的Sum调用Credit。您还需要模拟您的帐户存储库并让您的模拟框架返回您的模拟帐户以响应AccountRepository.Get