Ich verwende Rhino.Mocks und Struktur-Map, um Unit-Test meinen Code zu helfen. Ich habe mehrere Tests, die passieren, wenn sie von selbst ausgeführt werden, aber wenn sie ausgeführt werden, wenn eine Gruppe nicht besteht. Der Setup-Code für diese Komponententests lautet:Unit-Test verwendet keine korrekte Mocking-Klasse
[TestInitialize()]
public void Setup()
{
ObjectFactory.Initialize(x =>
{
x.For(IManager)().Use(Handler)();
});
}
In meinen Tests stub ich diese Schnittstelle aus und rufen Sie die Methode auf.
[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);
}
Test Method 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);
}
Dies ist Einheit den folgenden Code zu testen.
public bool AreMultiple(WorkOrder workOrder)
{
string secondUser = _handler.GetTwoUserName(_workflowManager.GetNumberForProject(workOrder.Id));
if (String.IsNullOrEmpty(secondUser))
{
return false;
}
return true;
}
Wenn ich sie selbst betreibe, funktionieren sie gut. Wenn ich sie zusammen laufen lasse, geht der erste und der zweite fehl. Wenn ich das zweite debugge, finde ich, dass der Rückgabewert in der Stubbed-Methode immer noch als Null zurückkommt. Wie bekomme ich das, um die neue Stubbed-Methode zu verwenden?
UPDATE.
Ich verwende StructureMap als meinen Container. Von dem, was ich gefunden habe, ist der folgende Code, was verwendet wird, um den Behälter zu entsorgen, den ich von diesem link bekommen habe. Wenn ich das addierte, scheiterte der Test noch, wenn er zusammen lief, aber pass, wenn er einzeln lief.
[TestCleanup()]
public void TestCLeanup()
{
ObjectFactory.Container.Dispose();
}
Wie lösen Sie das Feld '_handler' auf? –