私はあなたのような何かをどうやって処理するのか知りたいと思います。ベストプラクティスは...RhinoMock - 1つの方法で複数の期待 - ベストプラクティス
ないように私がプレゼンターオブジェクト
の負荷というメソッドを持っていると言ういただきました第一の方法は、次のようになります。
public void Load(ViewMode mode, int? id)
{
if(mode == ViewMode.Modify)
view.CurrentEntity = model.GetMyEntityById(id.GetValueOrDefault(0));
else
view.CurrentEntity = model.CreateNewEntity();
}
このコードをテストするために私が使用して2つのテストを持っていますRhinoMockセットアップ期待に
[TestMethod]
public void Load_ShouldCallModelToGetEntityIfViewModeEqualsModify()
{
IView view = _mockery.StrictMock<IView>();
IModel model = _mockery.StrictMock<IModel>();
Entity e = new Entity()
using(_mockery.Ordered())
{
Expec.Call(model.GetMyEntityById(3)).Return(e)
view.CurrentEntity = e;
}
_mockery.ReplayAll()
Presenter sut = new Presenter(view, model);
sut.Load(ViewMode.Modify, 3);
_mockery.VerifyAll();
}
そして私は、私はViewMode.Addために他のパスをテストする別のテストを持っている...
だから私は
public void Load(ViewMode mode, int? id)
{
view.CollectionA = model.GetListOfA(); <------ADDED THIS
view.CollectionB = model.GetListOfB(); <------AND THIS
if(mode == ViewMode.Modify)
view.CurrentEntity = model.GetMyEntityById(id.GetValueOrDefault(0));
else
view.CurrentEntity = model.CreateNewEntity();
}
のようなルックスにプレゼンターのLoadメソッドを変更した場合、私の質問は今、私はすべての私の前のテストで両方GetListの方法の期待を追加する必要がありますされたり、それは期待0実際になりますテストでは、モデルを呼び出すだけでなく、IDでエンティティを取得するよりも、テストの名前を変更する必要があります。
そのためには最高の方法があります。私のすべてのテストを変更することは、いくつかのモックにコールを追加するときの正しい方法です。以前のテストの呼び出しをいくつか期待し、次のような別のテストを追加する方法があります。 [TestMethod] public void Load_ShouldCallModelToObtainAListOfA();
となり、他のテストが失敗することはありません。
私はその漠然とした疑問を知っていますが、誰かが私に尋ねることを理解している場合は、このような状況を行動テストでどのように処理するか教えてください。
はどうもありがとうございました 違反あなたが望む結果を達成するために呼ばれていることを確認特定のメソッドを作るためにあなたのユニットテストを書いているように見えます
ありがとうございました。それは私の質問に完全に答えました – Breach