Я тестирую класс, который имеет две зависимости от IFoo. Оба экземпляра IFoo должны быть объектами MOCK, чтобы я мог VerifyExpectations для каждого. Каждый экземпляр создается и управляется RhinoMocksMockingKernel.
Я думаю, что издевательское ядро запутывается в том, какой экземпляр он должен проверять.
Мне также кажется, что я не совсем понимаю, как правильно настроить RhinoMocksMockingKernel для этого случая.
Я знаю, что могу использовать dep1.AssertWasCalled ... против dep1.VerifyAllExpectations ().
Вот пример кода.
public interface IFoo
{
void DoX();
void DoY();
}
public class SubjectUnderTest
{
private readonly IFoo dep1;
private readonly IFoo dep2;
public void DoWork()
{
dep1.DoX();
dep2.DoY();
}
public SubjectUnderTest(IFoo dep1, IFoo dep2)
{
this.dep2 = dep2;
this.dep1 = dep1;
}
}
[TestFixture]
public class Tests
{
[Test]
public void DoWork_DoesX_And_DoesY()
{
var kernel = new Ninject.MockingKernel.RhinoMock.RhinoMocksMockingKernel();
var dep1 = kernel.Get<IFoo>();
var dep2 = kernel.Get<IFoo>();
// tried this binding but it doesnt seem to work
kernel.Bind<SubjectUnderTest>()
.ToSelf()
.WithConstructorArgument("dep1", dep1)
.WithConstructorArgument("dep2", dep2);
var sut = kernel.Get<SubjectUnderTest>();
dep1.Expect(it => it.DoX());
dep2.Expect(it => it.DoY());
sut.DoWork();
dep1.VerifyAllExpectations();
dep2.VerifyAllExpectations();
}
}