簡體   English   中英

使用ember-cli-mirage測試錯誤響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM