ember.js - 余热试验测试参数

标签 ember.js ember-cli-mirage

我有从路径添加到搜索请求的默认参数。我想在ember-cli-mirage中对它们进行测试,但仍停留在如何捕获request或requestBody上,以便可以对其进行断言。

正在寻找类似于this SO post上找到的内容,但需要访问实际请求而不是DOM。我可以使用currentUrl()访问用户输入的搜索参数(在我的示例中为“文本”参数),但是发送到服务器的请求中包含默认参数,但不包括url。

有没有办法使用ember-cli-mirage捕获并断言请求本身?

就像是

test('it appends default params to request'), function(assert) {
  let searchUrl = '/my/route/url';

  server.get(searchUrl, (db, request) => {
    assert.equal(request.requestBody, "text=abc&all=true");
  }
});

编辑

我能够使用Qunit的异步帮助程序通过测试,如下所示:
test('it appends default params to athlete request', function(assert) {
  assert.expect(2);
  let done = assert.async();

  server.get('/athletes', (db, request) => {
    let params = request.queryParams;
    assert.equal(params["page"], "1");
    assert.equal(params["per"], "50");
    done();
  });

  server.create('athlete', {first_name: 'John'});
  visit('/athletes');
});

仍然在控制台中针对与json:api序列化相关的测试出现错误:
normalizeResponse must return a valid JSON API document:
        * meta must be an object

打算在其他地方打开与此故障相关的另一个问题,并将其链接到注释中。

最佳答案

传递给您的路由处理程序的request参数是PretenderJS请求对象,它具有一些有用的键:

  • request.params,路由
  • 的动态段
  • request.queryParams,反序列化查询请求参数
  • request.requestBody,文本正文,您可以使用JSON.parse(request.requestBody)将其转换为对象。

  • 因此,如果您想对查询参数进行断言,请使用request.queryParms

    关于ember.js - 余热试验测试参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34364898/

    相关文章:

    javascript - Ember , Ember 验证匹配密码和确认

    javascript - 将对象推送到 EmberJS 数据存储

    ember.js - Ember-CLI-Mirage 强制执行 JSON :API?

    javascript - 在 ember cli mirage 0.2.x 中重构模拟响应

    javascript - Ember.js - 将 ember-cli-mirage 用于假模型时未找到模型待办事项

    javascript - 来自 Mirage 的 Ember 数据无法在 index.hbs 上显示

    ember-cli-mirage - ember-cli-mirage 模型无法使用 Ember 数据模型中的计算属性

    ember.js - Ember js 中的多个观察者

    ember.js - ember-data 作为 d3 的数据

    javascript - 如何使用 ember-cli 安装 fastclick?