我想像集成测试一样测试两个或多个 Promise,它们应该按顺序运行。示例显然是错误的,因为我作为用户仅从之前的测试(电子邮件)中获取了属性。
请注意,我在这里使用 chai-as-promised,但如果有更简单的解决方案,我就不必这样做。
userStore 返回一个 promise ,如果它在其他测试中只是一行代码而没有问题,我可以解决它。
it.only('find a user and update him',()=>{
let user=userStore.find('testUser1');
return user.should.eventually.have.property('email','testUser1@email.com')
.then((user)=>{
user.location='austin,texas,usa';
userStore.save(user).should.eventually.have.property('location','austin,texas,usa');
});
});
如果我使用 return Promise.all
那么它不能保证按顺序运行,对吗?
最佳答案
在链接 Promise 时,您必须确保始终返回
来自每个函数的 Promise,包括 .then()
回调。对于您的情况:
it.only('find a user and update him', () => {
let user = userStore.find('testUser1');
let savedUser = user.then((u) => {
u.location = 'austin,texas,usa';
return userStore.save(u);
// ^^^^^^
});
return Promise.all([
user.should.eventually.have.property('email', 'testUser1@email.com'),
savedUser.should.eventually.have.property('location', 'austin,texas,usa')
]);
});
关于javascript - 如何连续运行 mocha 集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32289130/