Я новичок в moq и модульном тестировании.Так что я не совсем понимаю это.простите, если вопрос глупый.Пожалуйста, помогите мне понять следующий сценарий.
Ниже приводится мой простой тест
[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 =" foo";"«System.NullReferenceException» выбрасывается.
Почему, я думаю, причина в том, что я использую Moq.
Странно то, что если я изменю конструктор класса "DummyClass".Вот так
public DummyClass(IDummyInterface i)
{
i.Model = new DummyModel() { MyProperty ="foo"};
//i.Model.MyProperty = "foo";
}
Тесты пройдены.Во втором случае, даже если я пытаюсь изменить значение «foo» на «bar».Тест не пройден (хотя это хорошо).
Я просто хочу понять, что происходит.и как я полагаю, moq и проверить дочерние свойства.