我是moq和單元測試的新手。所以,我不完全理解它。如果問題是愚蠢的,請原諒我。請幫助我瞭解以下情況。單元測試拋出「System.NullReferenceException」,使用Moq和Nunit
以下是我簡單的測試
[Test]
public void TryMoq() {
var mock = new Mock<IDummyInterface>();
var dummy = new DummyClass(mock.Object);
mock.VerifySet(m => m.Model = It.Is<DummyModel>(mo => mo.MyProperty == "foo"));
}
和我米試圖測試
public class DummyClass
{
public DummyClass(IDummyInterface i) {
i.Model = new DummyModel() ;
i.Model.MyProperty = "foo";
}
}
public class DummyModel
{
public string MyProperty { get; set; }
}
public interface IDummyInterface {
DummyModel Model { get; set; }
}
現在行 「i.Model.MyProperty = 」富代碼「;」 「System.NullReferenceException」正在被拋出。
爲什麼我認爲自從我使用Moq以來的原因。
奇怪的是,如果我改變了「DummyClass」的構造函數。像這樣
public DummyClass(IDummyInterface i)
{
i.Model = new DummyModel() { MyProperty ="foo"};
//i.Model.MyProperty = "foo";
}
測試通行證。在第二種情況下,即使我嘗試將「foo」的值更改爲「bar」。測試失敗(雖然這很好)。
我只是想了解發生了什麼事情。以及我想如何檢查和驗證孩子的財產。
感謝您的好解釋。隨你的答案。我也很喜歡「arneeiri」的回覆,因爲它解決了我的問題:) – Mohit 2010-06-30 21:43:34