gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 05:59:20 26 4
gpt4 key购买 nike

遇到了几次失败,想知道我是否正确理解 Mirage:

1.在 ember-cli-mirage 中,我定义的服务器响应是否应该反射(reflect)我的实际服务器返回的内容是否正确?例如:

this.get('/athletes', function(db, request) {
let athletes = db.athletes || [];
return {
athletes: athletes,
meta: { count: athletes.length }
}
});

我正在使用自定义序列化程序,上面的内容与我的服务器响应的格式相匹配,以获取此路由上的请求,但是,在两次测试中,我遇到了两次失败并出现此错误: normalizeResponse must return a valid JSON API document: meta must be an object
2. mirage 是否强制执行 json:api 格式,这样做是因为我设置测试的方式吗?

比如我有几个测试访问上面的 /athletes路线,但是当我使用如下所示的异步调用时会发生故障。我很想知道正确覆盖服务器响应行为的适当方法,以及为什么 normalizeResponse 错误出现在控制台中进行 2 次测试,但只会导致下面的测试失败。
test('contact params not sent with request after clicking .showglobal', function(assert) {
assert.expect(2);
let done = assert.async();
server.createList('athlete', 10);

//perform a search, which shows all 10 athletes
visit('/athletes');
fillIn('.search-inner input', "c");

andThen(() => {
server.get('/athletes', (db, request) => {
assert.notOk(params.hasOwnProperty("contacts"));
done();
});

//get global athletes, which I thought would now be intercepted by the server.get call defined within the andThen block
click('button.showglobal');
});
});

结果:
✘ Error: Assertion Failed: normalizeResponse must return a valid JSON API document:
* meta must be an object
expected true

我尝试按照上一个示例 here 中的建议将服务器响应更改为 json:api 格式。但这看起来不像我的实际服务器响应,并导致我的测试失败,因为我的应用程序不解析具有这种结构的有效负载。任何提示或建议必须赞赏。

最佳答案

  • 你是对的。您上面显示的模拟是否发生故障?在我看来,它总是会返回 meta作为一个对象,因此请在发出请求后通过查看控制台来验证响应是否为您认为的响应。

    如果您想在测试期间查看响应,请输入 server.logging = true在你的测试中:
    test('I can view the photos', function() {
    server.logging = true;
    server.createList('photo', 10);

    visit('/');

    andThen(function() {
    equal( find('img').length, 10 );
    });
    });
  • 不,Mirage 与您的特定后端无关,尽管它确实带有一些默认值。我会再次尝试启用 server.logging在这里调试您的测试。

    另外,在写 assert 时s 针对模拟服务器,在测试开始时定义路由处理程序,如 the example from the docs 所示.
  • 关于ember.js - Ember-CLI-Mirage 强制执行 JSON :API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515220/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com