Я нашел обходной путь, от которого я не в восторге, но он работает.Вместо вызова AddObject()
для дочернего объекта вы можете вызвать устаревший метод AddTo[Collection Name]()
для самого контекста данных.Поскольку это всего лишь поверхностный вызов метода, его можно легко оценить с помощью FakeItEasy.
Мой код изменился следующим образом:
public void SendEmails()
{
// ... code to send emails goes here...
_dataContext.AddToEmails(this);
_dataContext.SaveChanges();
}
Затем в моем модульном тесте:
A.CallTo(_dataContext).Where(m => m.Method.Name == "AddToEmails").MustHaveHappened();
A.CallTo(() => _dataContext.SaveChanges()).MustHaveHappened();
Конечно, делая это, вы всегда игнорируете предпочтительные, не осуждаемые методы всякий раз, когда хотите добавить в коллекцию контекст данных.Не говоря уже о том, что есть большая вероятность, что позже меня застанет необходимость определить выполнение метода дочернего объекта ...
Если кто-нибудь знает лучший способ, пожалуйста, поделитесь!
Спасибо,
Эрик