我正在尝试重用返回auth令牌的代码来测试受保护的端点。
我尝试在回调中返回promise响应。这是代码:
common.js
const authToken = accessToken => {
conn
.connect()
.then(() => {
request(app)
.post("/register")
.send({ username: "newUser", password: "newPass" })
.then(res => {
request(app)
.post("/login")
.send({ username: "newUser", password: "newPass" })
.then(res => {
token = res.body.token;
accessToken(token);
})
.catch(err => done(err));
})
.catch(err => done(err));
})
.catch(err => done(err));
};
module.exports = { authToken };
auth.test.js
const authToken = require("../common").authToken();
let token;
before(done => {
authToken(token => {
token = token;
done();
});
})
但是我一直收到此错误:
TypeError: authToken is not a function
答案 0 :(得分:1)
更改此:
const authToken = require("../common").authToken();
对此:
const authToken = require("../common").authToken;
您的原始代码加载了common.js模块,从其中获取了导出对象,从导出中获取了.authToken
属性,然后在该导出对象中调用了该函数引用,并从执行该函数中分配了返回值到authToken
变量。由于该函数不返回任何内容,因此authToken
将是undefined
且肯定不是函数,因此当您尝试将其用作函数时会导致错误。
相反,您只想导入函数引用本身,并将函数引用分配给您的authToken
变量。然后,仅导入函数引用即可使您稍后以auth.test.js
的方式调用它。