ユニットコードのテストに役立つRhino.MocksとStructure mapを使用しています。私は、彼ら自身が走った時に合格するいくつかのテストを持っています。これらの単体テストの設定コードは、次のとおりです。単体テストが正しいモッククラスを使用していません
私のテストでは、このインターフェイスをスタブしてメソッドを呼び出します。
[TestMethod]
public void AreMultiple_Test()
{
var mackIManager = MockRepository.GenerateMock<IManager>();
mackIManager.Stub(u => u.GetTwoUserName(Arg<int>.Is.Anything)).Return(null);
ObjectFactory.Inject(typeof(IManager), mackIManager);
StepAdditionalActionBase actionBase = new StepAdditionalActionBase();
bool areMultiple = actionBase.AreMultiple(new WorkOrder { Id = "123" });
Assert.IsFalse(areMultiple);
}
試験方法2
[TestMethod]
public void AreMultiple_Test()
{
var mackIManager = MockRepository.GenerateMock<IManager>();
mackIManager.Stub(u => u.GetTwoUserName(Arg<int>.Is.Anything)).Return("123");
ObjectFactory.Inject(typeof(IManager), mackIManager);
StepAdditionalActionBase actionBase = new StepAdditionalActionBase();
bool areMultiple = actionBase.AreMultiple(new WorkOrder { Id = "123" });
Assert.IsTrue(areMultiple);
}
これは、次のコードをテストするユニットです。
public bool AreMultiple(WorkOrder workOrder)
{
string secondUser = _handler.GetTwoUserName(_workflowManager.GetNumberForProject(workOrder.Id));
if (String.IsNullOrEmpty(secondUser))
{
return false;
}
return true;
}
私はそれらを単独で実行すると、正常に動作します。私がそれらを一緒に走らせると、最初のパスと2番目のパスが失敗します。私が2番目のものをデバッグすると、Stubbedメソッドの戻り値がまだnullに戻っていることがわかります。新しいStubbedメソッドを使用するにはどうすればよいですか?
更新。
私はコンテナとしてStructureMapを使用しています。私が見つけたことから、次のコードは、linkから取得したコンテナを処分するために使用されるコードです。これを追加すると、一緒に走ってもテストは失敗しますが、個別に実行されたときには合格になります。
[TestCleanup()]
public void TestCLeanup()
{
ObjectFactory.Container.Dispose();
}
どのように '_handler'フィールドを解決しますか? –