遇到了几次失败,想知道我是否正确理解 Mirage:
1.在 ember-cli-mirage 中,我定义的服务器响应是否应该反映我的实际服务器返回的内容是否正确?例如:
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
我尝试按照此处最后一个示例中的建议将服务器响应更改为 json:api 格式,但这看起来与我的实际服务器响应完全不同,并导致我的测试失败,因为我的应用程序不解析具有此结构的有效负载。任何提示或建议必须赞赏。