所以我是犀牛嘲笑的新手,我正试图让它进入我正在进行的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(); var presenter = mocks.StrictMock (); 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"); }
但是我不断从方法中获取空引用异常DoStuff
(在期望设置期间),因为View对象为null.这就是我被困住的地方.我已经调用了Init
方法,它分配了View
属性的值,我认为期望设置的重点是方法本身从未被调用过?
看起来你正在测试Rhino Mocks.您正在嘲笑视图和演示者.我将假设模仿主持人是不可取的,你应该只模仿视图.