我正在使用Rhino.Mocks和Structure map来帮助单元测试我的代码。当他们自己跑完时,我有几个测试通过,但是当作为一个组运行时未能通过。这些单元测试的设置代码是:单元测试不使用正确的嘲讽类
[TestInitialize()]
public void Setup()
{
ObjectFactory.Initialize(x =>
{
x.For(IManager)().Use(Handler)();
});
}
在我的测试中,我将这个接口存根并调用方法。
[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;
}
当我自己运行它们时,它们工作正常。当我把它们放在一起时,第一次通过,第二次失败。当我调试第二个时,我发现Stubbed方法中的返回值仍然返回为null。我如何获得这个使用新的Stubbed方法。
UPDATE。
我正在使用StructureMap作为我的容器。根据我所能找到的,以下代码是用于处理从link得到的容器的代码。当我添加这个时,测试仍然失败时跑到一起,但通过时单独运行。
[TestCleanup()]
public void TestCLeanup()
{
ObjectFactory.Container.Dispose();
}
如何解决'_handler'字段? –