我想测试两个或更多的承诺,比如集成测试,它们应该按顺序运行。示例显然是错误的,因为我作为用户只获得了之前测试的属性(电子邮件)。
请注意,我在这里使用chai-as-promise,但如果有更简单的解决方案,我不必这样做。
userStore会返回一个承诺,如果在其他测试中只有一个单行,我就可以解决它。
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
,那么不能保证顺序运行吗?
答案 0 :(得分:0)
在链接承诺时,您必须确保始终return
来自每个函数的承诺,包括.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')
]);
});
答案 1 :(得分:0)
ES7 with async:
Date