【发布时间】:2023-03-13 20:25:02
【问题描述】:
我正在为 Node.js API 编写 Jasmine 测试。我正在尝试测试创建用户功能。测试如下所示:
describe('User test', function() {
describe('Post /api/saveUser'), function() {
it('saves a new user', function(done) {
request.post({url: 'http://website/api/saveUser', form:{email:testU.email, password:testU.password}, headers: {'authorization': adminU.jwt}}, function(err, res, body) {
expect(res.statusCode).toBe(200);
});
});
});
});
所以我需要对规范中的管理员用户 (adminU) 进行身份验证,以获取有效令牌以传递请求。这是使用另一个端点完成的。
request.post({url: 'http://website/api/authenticate', form:{email:adminU.email, password: adminU.password}}, function(err, res, body) {
adminUser.jwt = JSON.parse(res.body).token;
});
但是我如何将这些结合起来。如果我在 User 测试块上方插入身份验证代码,则在收到来自身份验证端点的响应之前运行用户测试。显而易见的选择是将用户测试包装在来自身份验证 api 的回调中,但是当我运行测试时,Jasmine 实际上并没有运行它们。
在 Jasmine 规范中使用回调结果的最佳方式是什么?
【问题讨论】:
-
谢谢,这确实有帮助。将身份验证放在带有
done()的“it”函数中意味着身份验证首先发生,这很好。是否可以将其从“it”规范中移出,以便所有其他测试都可以访问数据以节省为每个规范进行身份验证调用?或者这是不好的做法/不可能? -
我不太确定,我最近才开始使用 Jasmine。我所做的只是一个快速的谷歌。这里还有另外几个有趣的链接:htmlgoodies.com/beyond/javascript/stips/…、htmlgoodies.com/beyond/javascript/… 基本上搜索了 jasmine 异步测试
-
谢谢,我去看看
标签: javascript node.js testing jasmine