【发布时间】:2019-04-12 04:47:29
【问题描述】:
我已经使用这些 msdn 指导线设置了模拟:
Testing with a mocking framework (EF6 onwards)
var bsAc = _db.BusAcnts.FirstOrDefault(i => i.Id == 1);
返回一个帐户,但
var bsAc = _db.BusAcnts.Find(1);
模拟时返回 null。 Find 仅在使用模拟测试时失败,它在生产中运行良好。
BusAcnt:(Id 是主键)
public class BusAcnt
{
public int Id { get; set; }
...
}
查看我的其余设置here。
在调试中,我深入了解了 Locals |这个 | MyDbContext 和所有模拟的帐户都已加载,FirstOrDefault 返回预期的帐户。
在双打的配套文章中:
Testing with your own test doubles (EF6 onwards)
他们谈论实现Find,但这在 Mocking 文章中没有提到。
还有其他人设法让Find 方法与模拟一起工作吗?
有没有其他人遇到过同样的问题,这是 EF6.1 模拟的问题还是我的代码错误?我很想听听其他人关于他们使用 Find 方法进行模拟的经验。
您是否需要像测试双重文章中那样创建测试 DbSet?模拟文章中设置的语法是什么?
【问题讨论】:
-
Id是您的BusAcnts实体上的键吗? -
Id 是主键。
-
本页有解决栈溢出问题stackoverflow.com/questions/39857351/…
标签: c# unit-testing mocking entity-framework-6.1