Итак, я новичок в издевательствах над носорогом и пытаюсь запустить его в шаблонный MVP-проект, в котором я работаю. Итак, у меня есть интерфейс, представляющий мой View и класс для моего Presenter, например:
public interface IView {
string SomeData { get; set; }
}
public class Presenter {
public IView View { get; set; }
public void Init(IView view) {
this.View = view;
}
public virtual string DoStuff(){
return "Done stuff with " + this.View.SomeData;
}
}
И я пытаюсь настроить тест на макет метода DoStuff
, поэтому у меня есть базовое приспособление, подобное этому:
[TestMethod]
public void Test(){
var mocks = new MockRepository();
var view = mocks.Stub<IView>();
var presenter = mocks.StrictMock<Presenter>();
presenter.Init(view);
using(mocks.Record()){
presenter.Expect(p => p.DoStuff()).Return("Mocked result");
}
string result = string.Empty;
using(mocks.Playback()){
result = presenter.DoStuff();
}
Assert.AreEqual(result, "Mocked result");
}
Но я продолжаю получать исключение null reference из метода DoStuff
(во время установки ожидания), поскольку объект View является нулевым. И вот где я застрял. Я вызвал метод Init
, который присваивает значение свойству View
, и я подумал, что смысл установки ожидания заключается в том, что сам метод никогда не вызывался?