我有问题检验这一设想。
一张发票有两个州——完成和未完成——我想测试该方法的提交者。 FinishInvoice()打电话给DAO.FinishInvoice()然后打电话给DAO.GetInvoice()然后提出观点。 结果。 问题在于,我需要请DAO.GetInvoice()首先填写一张发票,然后从提交者那里索取。 初步意见(经另一次测试)。
我在此检验:
using (mocks.Record())
{
SetupResult.For(view.Invoice).PropertyBehavior();
SetupResult.For(DAO.GetInvoice(1)).Return(invoice);
Expect.Call(DAO.FinishInvoice(1)).Return(true);
Expect.Call(DAO.GetInvoice(1)).Return(invoice);
}
using (mocks.Playback())
{
Presenter presenter = new Presenter(view, DAO);
presenter.InitializeView(1);
presenter.FinishInvoice();
}
DAO.GetInvoice()将称为“观点”。 意见一开始即提出。 它不是试验的一部分,但如果我不提出看法,它就会失败。 对未结账单的发票必须确定收益价值。
第二次致DAO.GetInvoice()的电话来自FinishInvoice()和is测试的一部分。
如果我接受这一检验,我就在德国联邦统计局(德国)获得失败;预计数字1,实际数字0。 我已穿过该法典,的确叫DAO。 当FinishInvoice()被点名时,必须成为我的测试法,它有错,而不是我的手法。
如果我改变的话:
SetupResult.For(DAO.GetInvoice(1)).Return(invoice);
:
Expect.Call(DAO.GetInvoice(1)).Return(invoice);
它是行之有效的,但这只是检验的一部分,因为它是建立起来所需要的(但是,不能将它放在《原则和规则》中,因为它并非所有测试所必须)。
我相信,这并非我需要做的灾难,而是想学会如何确定我为什么要这样做。