Я использую карту Rhino.Mocks и Structure, чтобы помочь модулю проверить мой код. У меня есть несколько тестов, которые проходят, когда они запускаются сами по себе, но при запуске, когда группа не проходит. Код установки для этих модульных тестов:Тестирование модуля, не использующее правильный издевательский класс
[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'? –