这是我为以下内容编写测试的功能:
ensureUserDoesNotExist(request, response, next) {
this.User.findOne({ where: { email: request.body.email }})
.then(user => {
if (user) {
response.sendStatus(403);
} else {
next();
}
});
}
这是我无法通过的测试:
it('should return a 403 if a matching user is found', () => {
mockRequest.body.email = 'test@email.com';
userController.User.findOne.resolves(true); // This is a previously created sinon stub
userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext);
assert(mockResponse.sendStatus.calledWith(403));
});
它失败了,只是声称没有调用存根(根本不需要它)。
我强烈怀疑这与承诺 - 或者诗乃与它的互动 - 有关 - 但是我在试图弄清楚究竟是什么时有一个完整的空白。代码按预期工作(或者在我玩之前最后一次查看时)。任何人都可以帮助我吗?
答案 0 :(得分:1)
在结束请求之前评估您的断言 你需要回复承诺
ensureUserDoesNotExist(request, response, next) {
return this.User.findOne({ where: { email: request.body.email }})
.then(user => {
if (user) {
response.sendStatus(403);
} else {
next();
}
});
}
并在then
子句
it('should return a 403 if a matching user is found', () => {
mockRequest.body.email = 'test@email.com';
userController.User.findOne.resolves(true); // This is a previously created sinon stub
userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext).then(() => {
assert(mockResponse.sendStatus.calledWith(403));
});
});
答案 1 :(得分:0)
测试还必须返回一个承诺,指示对Mocha的异步测试。您可以使用#s=df.stack().replace({'[(|)]':' '},regex=True).str.strip().str.split(' ',expand=True)
调用返回的内容:
s=df.stack().str.split('(',expand=True)
s[1]=s[1].replace({'[(|)]':' '},regex=True).str.strip()