【问题标题】:Ember + Mirage: response mock errorsEmber + Mirage:响应模拟错误
【发布时间】:2020-09-28 20:25:49
【问题描述】:
  // Some code from router
  return user.save().catch(e => {
    debugger; // says: ErrorClass {isAdapterError: true, stack: "Error: The adapter rejected the commit because it was invalid}
  });

  // Test
  import { Response } from 'miragejs';

  test('Show error page when failed uniqueness validation', async function(assert) {
    server.post('/users', () => {
      return new Response(422, {}, { errors: [{ detail: 'has already been taken' }] });
    });

    await visit('/users/new?email=test@email.com');
  });

我正在使用 Ember 3.16 和 ember-cli-mirage 1.1.8。我有一个无法正常工作的测试。我在嘲笑海市蜃楼的 422 响应。此响应还包含一些错误。在发出请求的路由器中,请求失败(输入catch)但是当我检查错误时,它没有告诉我状态代码或它的详细信息

【问题讨论】:

  • 您的应用代码中有 .catch() 吗?您可能会看到 Ember 数据错误

标签: javascript ember.js ember-cli-mirage


【解决方案1】:

查看来自 emberCLI Mirage V1.1.8 的文档,它显示此 example 以测试错误

test('the user sees an error if the save attempt fails', async function(assert) {
   this.server.post('/questions', () => ({
     errors: [ 'The database went on vacation' ]
   }), 500);

   await visit('/');
   await click('.new');
   await fillIn('input', 'New question');
   await click('.save');

   assert.dom('h2').hasText('The database went on vacation');
});

指定错误和状态响应的语法不同

【讨论】:

  • 使用Response 类,记录在here 也是有效的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多