0
考慮以下規格:的Javascript規格:承諾鏈,省略預期
describe('User',() => {
it('requires username', done => {
factory.build('user', { username: '' })
.then(user => user.validate())
.catch(error => expect(error.errors.messages.username).toMatch('is required'))
.then(done);
});
});
在這種情況下,如果創建成功,則回調catch
不調用,我們done
。所以基本上規格成功,而它應該失敗。 這只是一個普遍問題的例子:當我們把期望置於then
/catch
之內時,我們不能確定它們會被調用。
你會怎樣寫這個?
對於這個具體的例子我能想到這樣的解決方案的(但我不喜歡與承諾這種方式混合回調):
describe('User',() => {
it('requires username', done => {
factory.build('user', { username: '' })
.then(user => user.validate(error =>
expect(error.errors.messages.username).toMatch('is required')))
.then(done);
});
});
我認爲這有點多餘,因爲我們沒有從'except'中受益。當測試失敗時,我們沒有看到像''預期的匹配空''是'''',但是是異常消息。反覆做這件事似乎很麻煩。 –
「except」是什麼意思?如果你反覆這樣做,你可以簡單地定義一個你傳遞給'then'的助手函數,或者使用與斷言/測試庫一起提供的許多投擲器之一。 – Bergi
啊我犯了一個錯字,我的意思是「期望」。 –