1

最近の更新でテストが壊れたようです。Pretender を使用してサーバー呼び出しをモックしていますが、エラーが発生していますError: Assertion Failed: The response from a findQuery must be an Array, not undefined

アプリでそのページにアクセスしてもエラーは発生しないことに注意してください。このエラーは、テストを実行したときにのみ表示されます。

私はすでにthisthis、およびthisを見てきましたが、私の場合、これらの解決策はどれも当てはまらないようです。

私の Pretender ヘルパーの関連コードは次のとおりです。

var scores = [
  {
    id: 1,
    name: 'score 1'
  }
];

var levels = [
  {
    id: 1,
    name: 'level 1',
    score_id: 1
  }, {
    id: 2,
    name: 'level 2',
    score_id: 1
  }, {
    id: 3,
    name: 'level 3',
    score_id: 1
  }
];

return new Pretender(function() {
  this.get('api/v1/scores/:id', function(request) {
    var score = scores.find(function(score) {
      // in the failing test, request.params.id is '1'
      if (score.id === parseInt(request.params.id, 10)) {
        return score;
      }
    });

    return [200, {"Content-Type": "application/json"}, JSON.stringify({
      score: score,
      levels: levels
    })];
  });
});

そして、これはテストです:

test('displays "Project Score"', function() {
  visit('/projects/32/scores/1');

  andThen(function() {
    equal(find('h3.title').text(), 'Project Score');
  });
});

これは、上記のような動的ルートを使用するテストにのみ影響することに注意してください。このルートを使用するテストは正常に機能します。

this.get('api/v1/scores', function(request) {
  return [200, {"Content-Type": "application/json"}, JSON.stringify({
    scores: scores
  })];
});

私はこれをやってバイパスしようとしましたfind

this.get('api/v1/scores/:id', function(request) {
  return [200, {"Content-Type": "application/json"}, JSON.stringify({
    score: [
      {
        id: 1,
        name: 'score 1'
      }
    ],
    levels: levels
  })];
});

ただし、それでも同じエラーが発生します。

何か案は?この問題をどのようにデバッグしますか?

さまざまなバージョン:

Ember CLI: 0.1.12
Node: 0.10.33
NPM: 2.1.8
Ember: 1.10.0
Ember Data: 1.0.0-beta.15
Ember CLI Pretender: 0.3.1
Pretender: 0.6.0
Handlebars: 2.0.0
HTMLBars: ^0.7.4
Ember QUnit: 0.1.8
Ember QUnit Notifications: 0.0.6
QUnit: 1.17.1
4

0 に答える 0