2011-09-09 35 views
10

好 - 我爱NancyFx。使用这几行编写Web应用程序简直太棒了!试驾南希模块

但你如何试驾在单元级的NancyModules?

请注意,我知道南希(上的NuGet Nancy.Testing),这给优秀的方式来测试整个(几乎)应用程序堆栈提供的excellent testframework的。但现在,我的意思是单元水平测试,我用它来充实我的NancyModule的内容,在TDD方式。

由于路由在构造与构成整个动作的λ表达式定义,经常在一起时,它从一个单元测试感觉有点“可达”。但是,我是否漏掉了一些关于如何测试路线行为的明显信息?

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

public class ResouceModule : NancyModule 
{ 
    private IProductRepository _productRepo; 

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

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

回答

11

你可以做测试第一开发与测试工具,我们提供:

  • 在您的测试启动配置只包含你有被测模块和任何你想要的任何虚假对象引导程序。
  • 在测试执行特定的路线(如GET /列表) - 你可能需要一个小帮手这也许去除一些重复的代码。
  • 断言什么回来 - 你有充分的访问请求和响应对象(头,Cookie等),以助手的HTML机构一起,在1.8到来,佣工在移交JSON,XML和公正的字符串响应身体。
  • 进入下一个途径,冲洗和重复。

好了,你不只是测试模块,但如果你看看调用堆栈,有没有之前或之后多的事情,你打你的路线,所以它不是那么大的交易我的书:-)如果你确实想测试在完全隔离的模块,那么你可以自己只是建造它,并相应地捅个别路线(他们的模块,在短短的词典)。

+0

谢谢史蒂芬 - 正是我一直在寻找 –

4

由于Nancy.Testing的一部分,您可以使用配置bootsrapper控制设置,其中包括国际奥委会设定。这应该能够在没有较低级别依赖性的情况下测试模块,并启用TDD。