ember.js - 使用 ember-cli-mirage 测试错误响应

标签 ember.js acceptance-testing 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},
        ]);
    }
});

海市蜃楼建议如何去做这件事?

最佳答案

在测试中,定义在 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 );
  });
});

由于服务器为每个测试重新实例化,因此该处理程序将不存在于其他测试中。

还有一个 PR用于允许您编写 transient 路由处理程序的 API,这对于测试您的应用程序是否可以从错误中恢复很有用。

关于ember.js - 使用 ember-cli-mirage 测试错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997349/

相关文章:

ember.js - 我可以将 ember-simple-auth 与 express/passport session 域 cookie 一起使用吗

ember.js - Ember data store.find() 在使用无效 ID 调用时创建空项目

ember.js - Ember 销毁记录失败

Selenium - 等到同步完成

javascript - 对于简单的 HTML5 + jQuery 应用程序,我应该使用什么 JavaScript UI 测试框架?

javascript - 使用插件(in-repo)中的模板覆盖 ember 组件模板

git - 是否有可以与 git 中的代码一起使用的验收测试管理方法?

javascript - ember-cli-mirage 重定向 socket.io 客户端,在 mirage 中注入(inject)

javascript - 无法将商店的响应映射到模型 - EmberJS