gpt4 book ai didi

node.js - 使用 jasmine 和 node.js 测试 Web API

转载 作者:搜寻专家 更新时间:2023-10-31 22:41:26 25 4
gpt4 key购买 nike

我们编写了一个 RESTful 网络 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")
});
});
});

之后我们尝试使用名为 restler 的 REST 客户端,这样就可以了,因为我们不需要任何高级浏览器模拟。由于请求似乎是异步的这一事实而失败 - 即测试无用,因为它在调用“成功时”回调之前完成:

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);
});
});
});

如果您提供有关替代测试框架或同步请求客户端的任何提示,我们将不胜感激。

最佳答案

对于 Node ,来自 Misko Hevery 的 jasmine-node 具有异步支持并包装了 jasmine。

https://github.com/mhevery/jasmine-node

您将“完成”参数添加到测试签名,并在异步调用完成时调用它。您还可以自定义超时(默认为 500 毫秒)。

例如来自 Github 自述文件

it("should respond with hello world", function(done) {
request("http://localhost:3000/hello", function(error, response, body){
done();
}, 250); // timeout after 250 ms
});

jasmine regular 还支持使用 runs 和 waitsFor 进行异步测试,或者可以将“完成”与 Jasmine.Async 一起使用。

关于node.js - 使用 jasmine 和 node.js 测试 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com