繁体   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