使用Entity Framework对void方法进行单元测试

时间:2012-09-05 12:53:00

标签: entity-framework unit-testing

我正在努力熟悉单元测试。我编写了一个小应用程序,它解析来自Internet的数据并将其存储到数据库中。为此,我正在使用实体框架。

由于许多方法都是无效方法,例如

public void UpdateSiteValue(Site site, ObjectContext context)

此方法可用于更新db中的某些值。所以我基本上想知道如何从单元测试的角度来处理这个问题。也许我可以嘲笑对象上下文?

非常感谢任何意见。

1 个答案:

答案 0 :(得分:2)

这取决于您正在测试的内容。

由于您返回void,因此无法测试函数的返回值 - 那么您是否要测试您的方法是否会实际在数据库中进行更改?如果是这样,那么模拟您的上下文不是最佳解决方案,因为您没有测试实际代码。 Ladislav Mrnka对此提出了a great post。您可以将测试包装在事务范围内,然后再进行回滚吗? Id会增加,但至少你会测试一切。

或者,如果你想测试你的方法正在做的一切 - 直到你到达数据库层,有几种方法可以解决这个问题。建议的很多东西是使用存储库模式,因此您在测试中没有依赖EF。 Truewill也对a good post提出了这个问题。他还使用您可能认为相关的内存ObjectContext链接到MSDN article

以下是关于单位与功能与集成测试的更多general reading,可以提供帮助。