【发布时间】:2013-02-14 20:21:33
【问题描述】:
以下示例代码在生产中运行良好,但不能为单位 已测试,因为 EntityFunctions。
我的单元测试项目正在使用 InMemoryDatabase 而不是真正的 SQL 数据库。我可以轻松解决我的 通过在 SQL 数据库中使用计算列创建视图来解决问题 myValue 和 newValue。我喜欢找到一种方法来做单元测试工作 无需更改我的方法,也无需创建新的 SQL 视图
public class EcaseReferralCaseRepository : Repository
{
public class myType
{
public DateTime myValue;
public DateTime newValue;
}
public myType GetNewValues()
{
return
(myType)(from o in context.EcaseReferralCases
select new myType
{
// LINQ to Entity
myValue = (DateTime)System.Data.Objects.EntityFunctions.AddDays(o.StartDate, 0),
newValue = (DateTime)System.Data.Objects.EntityFunctions.AddDays(o.StartDate, 30)
// LINQ to Object
//myValue = o.StartDate.AddDays(0),
//newValue = o.StartDate.AddDays(30)
});
}
}
This link shows a good example to unit test EntityFunctions,我用这种方法解决了我的一个单元测试困难,但不知道如何解决这个问题。
【问题讨论】:
-
你的问题是什么?
-
标题是我的问题!如何对 GetNewValues() 方法进行单元测试
-
通过测试你能得到什么?
-
如果您使用 FakeDataBase 完成了单元测试,您将知道 GetNewvalue() 方法的单元测试将失败,并显示诸如 EntityFunctions 仅在 LINQ to Entity 中支持的消息。对于 LINQ to Object,您需要使用底部两行。我们的工作是为每个业务逻辑方法创建单元测试。示例代码用于轻松显示我的问题。
标签: c# unit-testing frameworks entity