難倒了幾個失誤,想知道如果我理解正確幻影:Ember-CLI-Mirage實施JSON:API?
1.In燼-CLI-海市蜃樓,我是正確的,因爲服務器的響應,我定義應反映我的真實服務器返回?例如:
this.get('/athletes', function(db, request) {
let athletes = db.athletes || [];
return {
athletes: athletes,
meta: { count: athletes.length }
}
});
我使用自定義序列和上面這條線路上的GET請求我的服務器響應的格式相匹配,但是,在兩個測試我得到兩次失敗與此錯誤:normalizeResponse must return a valid JSON API document: meta must be an object
2.海市蜃樓強制執行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格式在最後一個例子here建議,但這個看上去一點也不像我的實際服務器響應,並導致我的測試失敗因爲我的應用不會使用這種結構來分析有效載荷。任何提示或建議,必須讚賞。
嗨,山姆,我能夠解決我的失敗,使用您的建議將模擬服務器移動到測試頂端。我已在下面發佈我的答案。再次感謝您的快速反應(和Mirage!)。 – Jim