unit-testing - 试驾南希模块

标签 unit-testing nancy

好的 - 我喜欢 NancyFx。用那几行代码编写一个 Web 应用程序真是太棒了!

但是您如何在单元级别上测试您的 NancyModules?

请注意,我知道 excellent testframework随 Nancy(Nancy.Testing on NuGet)提供,它提供了测试整个(几乎)应用程序堆栈的极好方法。但现在我的意思是我用来充实我的 NancyModule 内容的单元级测试,以 TDD 方式。

由于路由是在构造函数中定义的,通常与构成整个操作的 lamda 表达式一起定义,因此从单元测试中感觉有点“无法访问”。但是我是否错过了一些关于如何测试路线 Action 的明显内容?

例如,这个简单应用程序的单元测试看起来如何?

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

   public ResourceModule(IProductRepository repo) : base("/products") 
   {
        Get["/list"] = parameters => { 
           return View["productList.cshtml", repo.GetAllProducts()];
        };
   }
}

看到那里 - 现在我在测试之前编写了生产代码...... :) 关于如何开始测试有什么建议吗?

最佳答案

您可以使用我们提供的测试工具进行测试优先开发:

  • 在您的测试启动中配置一个 Bootstrap ,该 Bootstrap 仅包含您正在测试的模块和您想要的任何假对象。
  • 在你的测试中执行一个特定的路由(比如 GET/list)——你可能需要一个小助手来删除一些重复的代码。
  • 断言返回的内容 - 您可以完全访问请求和响应对象(对于 header 、cookie 等),以及 HTML 正文的帮助程序,以及在 1.8 中用于处理 JSON、XML 和正文中的字符串响应的帮助程序。
  • 移动到下一条路线,冲洗并重复。

  • 好的,所以你不仅仅是在测试模块,而且如果你查看调用堆栈,在你到达你的路线之前或之后没有太多事情发生,所以在我的书中这没什么大不了的 :-) 如果你真的确实想完全隔离地测试模块,那么您可以自己构建它并相应地戳各个路由(它们只是模块中的字典)。

    关于unit-testing - 试驾南希模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7365306/

    相关文章:

    c# - Nancy:从 "/"提供静态内容(例如 index.html)?

    node.js - 在所有测试运行后开 Jest 清理

    c# - 我可以在 Moq 中重用 It.Any 参数描述符吗

    java - Junit mockito when(..).thenReturn() 抛出 NullPointerException

    .net - 自托管 Nancy 控制台应用程序中的 Razor View 引擎问题

    c# - 我可以自己调用一个 nancy 模块吗

    c# - Fluent Validation 未在用于本地化的 ResourceManager 类上找到属性

    php - 如何使用 Codeception 将鼠标悬停在元素上?

    ruby-on-rails - 如何测试复合 Rails 模型范围?

    c# - IDisposable 对象是否在使用 RequestContainer 的 Nancy 请求结束时被释放?