Я искал это, и, похоже, это все поймало, к сожалению, все, что я прочитал, не помогает понять это. Вот класс:Rhino Mocks Expect Expect # 1 Actual # 0: Нужна помощь
public interface IMockInterface
{
MockClass MockedMethod();
MockClass MockThis();
}
public class MockClass : IMockInterface
{
public virtual MockClass MockedMethod()
{
MockClass returnValue;
returnValue = new MockClass();
returnValue.SomeMessage = "Not mocked";
return returnValue;
}
public MockClass MockThis()
{
MockClass mock;
MockClass returnValue;
mock = new MockClass();
return mock.MockedMethod();
}
}
И тест:
public void MockTest_Internal()
{
MockClass mainClass;
MockClass returnedClass;
IMockInterface mockProvider;
mainClass = new MockClass();
mockProvider = repository.StrictMock<IMockInterface>();
Expect.Call(mockProvider.MockedMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
repository.ReplayAll();
returnedClass = mainClass.MockThis();
provider.AssertWasCalled(item => item.MockedMethod());
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}
А также пробовал и не работает
Но я получаю это исключение:
Rhino .Mocks.Exceptions.ExpectationViolationException:
IMockInterface.MockedMethod(); Ожидаемый # 1, действительный # 0
Теперь из того, что я прочитал, будет предлагаться либо метод был вызван с различными ожидаемыми параметрами, либо метод никогда не вызывался, а ожидалось, что он будет вызван. Это не относится к тесту.
Боковое примечание: Это мой первый раз, когда я использую Rhino.Mocks без какого-либо кода дома, поэтому я в основном собираю его, когда я иду. Там может быть что-то действительно глупо здесь ...
Это был старым тест прокомментировал, но это не то, что я должен был с помощью:
public void MockTest_Internal()
{
MockClass mainClass;
MockClass returnedClass;
IMockInterface mockProvider;
mainClass = new MockClass();
var provider = MockRepository.GenerateStub<IMockInterface>();
provider.Stub(item => item.MockedMethod())
.Return(new MockClass { SomeMessage = "Mocked" });
returnedClass = mainClass.MockThis();
provider.AssertWasCalled(item => item.MockedMethod());
Assert.IsTrue(returnedClass.SomeMessage == "Mocked");
}
Я просто пытаюсь создать класс мусора, чтобы узнать, как насмехаться. В основном я создал класс, чтобы иметь метод, который вызывается внутри метода и что-то возвращать. –
Однако, посмеянный объект является конкретным объектом. Код, который вы тестируете, должен будет использовать обманный объект напрямую, чтобы вызываемые/издевавшиеся методы вызывались. – tvanfosson
Честно говоря, я мог бы использовать второй пример, если он будет работать. Прямо сейчас я просто идиот, пытающийся поставить самолет вместе с коробкой частей. –