扩展超级测试 [英] Extending SuperTest
本文介绍了扩展超级测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我喜欢像这样使用 SuperTest 来处理我的身份验证系统:
I like to use SuperTest to work with my auth system like this:
const request = require('./valid_access_token')(require('supertest'));
request(app)
.get('/v1/bots')
.valid_token()
.expect('Content-Type', /json/)
...
valid_token() 会插入一个有效的访问令牌
valid_token() would insert a valid access-token
module.exports = function (Request) {
const Token = require('../../../app/v1/models/loader')('token');
const UserFactory = require('../fixtures/user');
Request.prototype.valid_token = function()
{
return UserFactory.createAsync('user')
.then(function(user){
return new Token({username: user.username}).createWeeklyAsync()
.then(function(userToken){
this.set("access-token",userToken[0].token);
return this;
})
})
}
return Request;
}
但是,当我运行它时,出现此错误:
However, when I run it I get this error:
TypeError: request(...).get(...).valid_token is not a function
我尝试了各种不同的方法,但没有成功.
I tried various different approaches, no luck.
推荐答案
所有功劳归于 https://github.com/acabreragnz
const request = require('supertest');
const Test = request.Test;
Test.prototype.authenticate = function(user) {
const {token, xsrfToken} = user.tokens;
return this
.set('Authorization', `Bearer ${token}`)
.set('X-XSRF-TOKEN', xsrfToken);
}
然后在你的测试中
return request(app)
.post('/user/settings')
.authenticate(user)
.send(...)
https://github.com/visionmedia/supertest/issues/381#issuecomment-282198972
这篇关于扩展超级测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文