使用jasmine和node.js测试Web API

Jes*_*per 5 node.js jasmine

我们编写了一个RESTful Web API,它使用node.js响应GET和PUT请求.我们在测试API时遇到了一些困难.首先,我们使用了Zombie.js,但它没有很好地记录,所以我们无法让它来发出PUT请求:

var zombie = require("zombie");

describe("description", function() {
  it("description", function() {
    zombie.visit("http://localhost:3000/", function (err, browser, status) {
      expect(browser.text).toEqual("A")
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

之后我们尝试使用一个名为restler的REST客户端,这没关系,因为我们不需要任何高级浏览器模拟.由于请求似乎是异步的,因此测试失败,因为它在调用'on success'回调之前完成,因此失败了:

var rest = require('restler');
describe("description", function() {
  it("description", function() {
    rest.get("http://www.google.com").on('complete', function(data, response) {
      // Should fail
      expect(data).toMatch(/apa/i);
    });
  });
});
Run Code Online (Sandbox Code Playgroud)

我们很感激有关替代测试框架或同步请求客户端的任何提示.

hro*_*oss 3

我对此很好奇,所以我做了更多研究。除了僵尸,你还有几个选择......

您可以像这个人一样将誓言与 http 库一起使用。

然而,我认为更好的方法可能是使用 APIeasy,它显然是建立在誓言之上的。Nodejitsu 上有一篇很棒的文章解释了如何使用它

另一个有趣的想法是,如果您使用的是expresso ,则使用expresso。