Javascript 如何在Mocha测试用例中发送头(';授权';,';承载令牌';)
我正在编写一个测试用例来测试我的API。当我尝试测试任何开放的API时,它工作得很好。但当我尝试将授权令牌与API一起发送时,它不起作用。代码如下: 我发送标题的方式是:Javascript 如何在Mocha测试用例中发送头(';授权';,';承载令牌';),javascript,node.js,unit-testing,mocha.js,chai,Javascript,Node.js,Unit Testing,Mocha.js,Chai,我正在编写一个测试用例来测试我的API。当我尝试测试任何开放的API时,它工作得很好。但当我尝试将授权令牌与API一起发送时,它不起作用。代码如下: 我发送标题的方式是: .set(“授权”、“承载人”+令牌) 这是正确的发送方式吗 我已尝试在Auth中发送授权令牌。但不能得到同样的结果。但当我试着在《邮递员》中消费同样的东西时,效果很好 it(“获取一些随机信息”,函数(完成){ 柴 .request(baseUrl) .get(“/someRandomApi”) .set(“授权”、“持有人
.set(“授权”、“承载人”+令牌)
这是正确的发送方式吗
我已尝试在Auth中发送授权令牌。但不能得到同样的结果。但当我试着在《邮递员》中消费同样的东西时,效果很好
it(“获取一些随机信息”,函数(完成){
柴
.request(baseUrl)
.get(“/someRandomApi”)
.set(“授权”、“持有人”+令牌)
.end(函数(err、res){
期望状态(200);
完成();
});
});
在调用.set()
之后,尝试调用.get()
:
it(“获取一些随机信息”,函数(完成){
柴
.request(baseUrl)
.set(“授权”、“承载人”+令牌)//首先设置头
.get(“/someRandomApi”)//然后获取数据
.end(函数(err、res){
期望状态(200);
完成();
});
});
我喜欢用以下方式设置测试:
let baseUrl = 'http://localhost:9090'
let token = 'some_authorization_token'
首先,我将在测试的最顶端,即use()
部分之后,实例化变量baseUrl
和token
接下来是测试的设置
it("Get some random Info", function(done) {
chai.request(baseUrl)
.get('/someRandomApi')
.set({ "Authorization": `Bearer ${token}` })
.then((res) => {
expect(res).to.have.status(200)
const body = res.body
// console.log(body) - not really needed, but I include them as a comment
done();
}).catch((err) => done(err))
});
现在,
.set()
不一定要像我的一样,在您的情况下也可以使用。chai http具有auth
功能来发送授权承载令牌
根据上的http代码,可以使用以下方式传递令牌:
.auth(accessToken,{type:'bearer'})
代码如下所示:
it("Get some random Info", function(done) {
chai.request(baseUrl)
.get('/someRandomApi')
.set(token,{ type: 'bearer' }) //token is actual token data
.then((res) => {
expect(res).to.have.status(200)
done();
}).catch((err) => done(err))
});
令牌是在哪里定义的?它是全局可用的,即使我已经尝试过硬编码令牌。我认为Token没有问题。您可以显示您的
baseUrl
变量吗?这是baseUrl=“”@leelavath。您似乎没有指定端口号。尝试在url中包含服务器正在运行的端口号。还可以尝试在页面的开头包含http://
url@LeelaVathi您传递给chai.request()的对象是什么?它应该是服务器对象。比如:chai.request(app)或者它应该是本地主机URL。你能把它包含在你的代码中吗?请找到我正在传递的url。它在没有任何授权的情况下工作,这意味着如果我传递一个类似“”的url,那么它工作正常。但是,如果我尝试测试一个需要发送授权和承载令牌的API,我将面临上述问题——上面抛出了一个错误。当标题为get
然后为set
时,它对我来说效果很好。它应该始终在请求方法之后,即set
应该在get
之后调用