У меня возникают настоящие проблемы с насмешкой, когда дело касается EF (версия 6, для чего это стоит).Сфокусировавшись на платформе Entity Framework и TypeMock
Это метод, который я пытаюсь тест:
public async Task<bool> IsSurveyComplete(Guid entityRef)
{
using (MyDbEntities context = new MyDbEntities())
{
MyEntity entity = await context.MyEntities.FindAsync(entityRef);
// do stuff
}
}
мне нужно фальсифицировать «лицо», но я понял, что просто пытаюсь сделать Isolate.Fake.Instance не работает, так как это на самом деле ObjectProxy, а не экземпляр типа MyEntity. Я обнаружил, что способ обойти это - установить контекст. Configuration.ProxyCreationEnabled - false. Однако это не работает, если я делаю это где угодно, кроме конструктора. Если я пытаюсь подделать DbContextConfiguration, он все еще использует прокси.
Итак, я создал новый конструктор будет использоваться при тестировании:
public MyDbEntities(bool useProxy)
: base("name=MyDbEntities")
{
this.Configuration.ProxyCreationEnabled = useProxy;
}
, а затем, в моем тесте:
Isolate.WhenCalled(() => new MyDbEntities()).WillReturn(new MyDbEntities(false));
Однако свойство ProxyCreationEnabled еще значение ИСТИНА, когда я положите точку останова в методе IsSurveyComplete после инструкции using.
Я также попытался (среди многих, многих других вещей):
var fakeContext = new MyDbEntities(false);
Isolate.Swap.AllInstances<MyDbEntities>().With(fakeContext);
Опять же, когда я исследую с точки останова, ProxyCreationEnabled верно.
Я собираюсь отказаться от TypeMock!
Можете ли вы пожалуйста загрузите свой код «IsSurveyComplete» и ваш тест? –