javascript - 扩展 super 测试

标签 javascript testing mocha.js supertest superagent

我喜欢用SuperTest像这样使用我的身份验证系统:

    const request = require('./valid_access_token')(require('supertest'));

    request(app)
    .get('/v1/bots')
    .valid_token()
    .expect('Content-Type', /json/)
    ...

valid_token() 将插入一个有效的访问 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;
    }     

但是,当我运行它时,出现了这个错误:

TypeError: request(...).get(...).valid_token is not a function

我尝试了各种不同的方法,但没有成功。

最佳答案

所有功劳归于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

关于javascript - 扩展 super 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683781/

相关文章:

javascript - emberjs - 测试 - 单击带有链接助手的链接

javascript - 在 JavaScript 对象创建 DOM 元素后,如何使用 Mocha/Chai 开始检查 DOM 元素?

java - 如何对两种不同的文件格式运行单元测试?

c++ - 快疯了,为什么我的变量在我身上发生变化?

javascript - 在将多变量测试引入动态 Web 应用程序时如何降低风险?

javascript - 下载 URL 只能将 1 个 php 变量传递给 google map 标记的属性?

node.js - 没有注册的Sinon Spy已被调用(Async/Await)

Javascript 定位元素

javascript - 在 JavaScript 上使用一个变量从一个按钮到一个状态

javascript - 如何在打开文件并调用 imageareaselect 时获取原始图像大小