【问题标题】:Unit Tests of Node.js REST services with Mocha or Jasmine使用 Mocha 或 Jasmine 对 Node.js REST 服务进行单元测试
【发布时间】:2012-07-10 21:00:01
【问题描述】:

我有一个 node 模块可以导出 express.js 的 REST 方法(索引、显示、更新、删除)..

测试 mocha 或 jasmine 单元测试框架的最佳方法是什么?

我应该如何描述我的测试?

谢谢。

【问题讨论】:

    标签: unit-testing node.js jasmine mocha.js


    【解决方案1】:

    我个人使用api-easy,它基于誓言和要求。 使用此模块,您可以轻松测试 REST API。

    这里是一个例子:

     var APIeasy = require('api-easy'),
          assert = require('assert');
    
      var suite = APIeasy.describe('your/awesome/api');
    
      suite.discuss('When using your awesome API')
           .discuss('and your awesome resource')
           .use('localhost', 8080)
           .setHeader('Content-Type', 'application/json')
           .post({ test: 'data' })
             .expect(200, { ok: true })
             .expect('should respond with x-test-header', function (err, res, body) {
               assert.include(res.headers, 'x-test-header');
             })
           .export(module);
    

    【讨论】:

    • 您的意思是像 Chai (chaijs.com) 或 Should.js (github.com/visionmedia/should.js) 之类的东西?我没试过,但我会说是的。
    • api-easy 使用 vows here。您使用vows 运行api-easy 测试。您不能使用任何其他工具运行 api-easy 测试。
    【解决方案2】:

    您可以使用request module 轻松地执行 HTTP 请求(或调用 REST API)。当响应可用时,您可以在回调中进行断言。对于断言,您可以使用任何您喜欢的断言模块,但我建议尝试should.js module。编写 should 语句很有趣。

    关于在 mocha、jasmine、vows 或任何其他测试框架之间进行选择。你选择哪一个并不重要。查看他们的 API 并选择您认为对您有生产力并符合您的思维和编码风格的框架。

    【讨论】:

    • 虽然这(即,使用请求模块)在使用 jasmine-node 从命令行运行测试时似乎有效,但我似乎无法使用 grunt-contrib-jasmine 运行它.而不是调用“var request = require('http')”,因为这些测试在浏览器的 Jasmine 的 SpecRunner.html 中运行,所以它不起作用,我应该调用什么?
    • 看起来您正在尝试在浏览器中使用 Jasmine 运行测试。我认为请求包不能同时在浏览器和服务器上运行。对于浏览器,您可以使用 jquery 进行调用
    • 我刚刚发布了这个GitHub gist,在那里我测试了 Mocha 并且应该在由 Journey 提供支持的模拟服务器上使用请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2014-04-01
    相关资源
    最近更新 更多