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