我正在尝试熟悉单元测试。我编写了一个小型应用程序,它解析来自 Internet 的数据并将其存储到数据库中。为此,我使用实体框架。
由于许多方法都是 void 方法,例如
public void UpdateSiteValue(Site site, ObjectContext context)
此方法可用于更新数据库中的某些值。所以我基本上想知道如何从单元测试的角度来解决这个问题。也许我可以模拟对象上下文?
将不胜感激任何输入。
我正在尝试熟悉单元测试。我编写了一个小型应用程序,它解析来自 Internet 的数据并将其存储到数据库中。为此,我使用实体框架。
由于许多方法都是 void 方法,例如
public void UpdateSiteValue(Site site, ObjectContext context)
此方法可用于更新数据库中的某些值。所以我基本上想知道如何从单元测试的角度来解决这个问题。也许我可以模拟对象上下文?
将不胜感激任何输入。
这取决于您要测试的内容。
由于您返回的是 void,因此您无法测试函数的返回 - 那么您是否想测试您的方法是否真的会在数据库中进行更改?如果是这样,那么模拟您的上下文并不是最好的解决方案,因为您没有测试实际代码。Ladislav Mrnka 对此发表了一篇很棒的文章。您能否将测试包装在事务范围内,然后再进行回滚?Id 会增加,但至少你会测试一切。
或者,如果您想测试您的方法是否正确 - 在您到达数据库层之前,有几种方法可以解决这个问题。很多建议是使用存储库模式,以便您在测试中不依赖 EF。Truewill 也就此发表了一篇很好的文章。他还链接到有关此的MSDN 文章,使用您可能会发现相关的内存中 ObjectContext。
这里有一些关于单元、功能和集成测试的更一般的阅读,可以提供帮助。