我有一个测试:
it('should not save a user if it already exists', ()=>{
var user : User = {userName : 'jack', name : 'Lenon'};
var user1 : User = {userName : 'jack', name : 'Linon'};
return repository.saveUser(user)
.then((user:User)=>{
return repository.saveUser(user1)
}).then((user : User)=>{
expect('Second ').equals('');
})
.catch((err) =>{
expect(err).equals("A user by that username already exist in the database");
});
});
这个想法是测试存储库拒绝以相同名称保存第二个用户。这是有效的,但我对“当时”强制失败的方式感到不满意。有没有更好的方法呢?
答案 0 :(得分:0)
假设您正在使用Chai。
然后expect('Second ').equals('');
可以成为expect.fail();
答案 1 :(得分:0)
如果您试图断言诺言已被拒绝,则可以利用then
的第二个回调函数。如果调用了成功回调,则应该throw()
,因为测试应该失败。然后,在第二个回调中(如果promise拒绝)应触发,您可以声明错误值。像这样:
return repository.saveUser(user)
.then((user:User)=> repository.saveUser(user1))
.then((user : User)=> {
// test will fail if promise resolves
throw new Error("Promise should not be fulfilled when user already exists")
},
err => {
// test will pass if promise rejects
// and the expectation is met
expect(err).equals("A user by that username already exist in the database");
}
)