【问题标题】:How to unit test full text search in ASP.NET MVC如何在 ASP.NET MVC 中对全文搜索进行单元测试
【发布时间】:2009-04-29 09:40:57
【问题描述】:

我刚刚开始使用 ASP.NET MVC 和 TDD。我读过在单元测试时你应该专注于测试你的代码,而不是其他系统,比如数据库。但是,当基本功能驻留在数据库中时会发生什么?

我已将 MVC Storefront 系列用作如何设置我的项目和模式的初始指南。由于全文搜索是必不可少的,我已将其设置为我的存储库中的一项功能

IQueryable<HealthOrganization> SearchOrganizations(string phrase);

现在,这个搜索的逻辑需要一个包含全文的表值函数和数据库中的一些其他函数。这些函数中的逻辑不可能在 fakerepository 中完全正确。对于对此进行单元测试并在搜索中执行 TDD 的最佳策略,您有什么建议?

【问题讨论】:

    标签: sql-server asp.net-mvc unit-testing full-text-search


    【解决方案1】:

    这不是单元测试,而是集成测试。所以你几乎不能像 TDD 那样实现它。

    我假设 您的 代码除了调用数据库之外没有什么作用。因此,您不必进行很多测试。如果您可以在最低级别模拟数据库调用,则可以测试调用是否发生。如果这变得非常复杂,最好不要为它编写单元测试。只会很难维护。

    要编写集成测试,您需要一个真实的数据库。

    【讨论】:

    • 我是这么想的。但是,如果您有一个应用程序,其中搜索是一个重要功能,您是否不想先开发搜索测试来试驾它?你能从集成测试开始吗?
    • @rundbom:你可以,我就是不会这样做。编写集成测试非常耗时。使用 TDD,您想要快速。如果没有,“流程”就会中断。还有另一个原因。使用 TDD,您希望实现 您的 代码正在执行您尝试执行的操作。它不是测试整个系统是否按预期工作。这很难解释,但是当集成测试失败时,它具有另一种含义,就像单元测试失败时一样。
    【解决方案2】:

    您可以创建一个包含一组已知项目的测试数据库,然后检查搜索代码是否返回您期望的结果..

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2010-10-22
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      相关资源
      最近更新 更多