【问题标题】:Test driving Nancy Modules试驾南希模块
【发布时间】:2011-11-13 23:37:48
【问题描述】:

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

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

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

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

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

public class ResouceModule : NancyModule 
{
   private IProductRepository _productRepo;

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

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

【问题讨论】:

    标签: unit-testing nancy


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢史蒂文——正是我要找的东西
    【解决方案2】:

    作为 Nancy.Testing 的一部分,您可以使用可配置的引导程序来控制设置,包括 IoC 设置。这应该能够在没有较低级别依赖关系的情况下测试模块,并启用 TDD。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2013-07-07
      • 2017-08-07
      • 2016-11-25
      • 1970-01-01
      • 2011-10-13
      • 2013-05-14
      相关资源
      最近更新 更多