[英]Testing error responses with ember-cli-mirage
我正在閱讀ember-cli-mirage的有關創建模擬響應的文檔,但無法弄清楚如何針對完全相同的請求測試錯誤響應。 例如:
test("I can view the users", function() {
var users = server.createList('user', 3);
visit('/users');
andThen(function() {
equal( find('li').length, 3 );
equal( find('li:first').text(), users[0].name );
});
});
test("I can view the error if viewing the users returns an error", function() {
// somehow set up an error response (?)
visit('/users');
andThen(function() {
equal( find('#error').length, 1 );
});
});
看起來形成響應的唯一方法是在路線中
this.get('/users', function(db, request) {
if (something based on the request, i guess?) {
return new Mirage.Response(500, {}, {message: 'Oops! Something bad happenned. :('});
} else {
return db.users.insert([
{name: 'Zelda', age: 142},
{name: 'Epona', age: 58},
]);
}
});
海市rage樓如何建議這樣做?
在測試中,將加載config.js
中定義的路由處理程序,但是由於您有權訪問server
,因此實際上可以覆蓋這些處理程序。
在這種情況下,我要做的只是為錯誤狀態創建一個臨時路由處理程序:
test("I can view the error if viewing the users returns an error", function() {
server.get('/users', {errors: ['there was an error']}, 404);
visit('/users');
andThen(function() {
equal( find('#error').length, 1 );
});
});
由於服務器是為每個測試重新實例化的,因此該處理程序在其他測試中將不存在。
還有一個API的PR ,它允許您編寫瞬態路由處理程序,這對於測試應用程序是否可以從錯誤中恢復非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.