2

私は ember.js アプリをセットアップしました。私は ember.js 1.0.0-rc4 と ember-data 0.13 を使用しています。このhttps://githubのような mocha.js で konacha セットアップを取得しようとしています。 .com/dgeb/ember_data_example .

私のspec_helper.js

//= require konacha_config
//= require_tree ./templates
//= require application_test
//= require sinon
//= require spec_utils

// Sinon fake server
var server;

// Stub out Konacha.reset()
Konacha.reset = Ember.K;

// Prevent automatic scheduling of runloops. For tests, we
// want to have complete control of runloops.
Ember.testing = true;

// Defer App readiness (it will be advanced in each test below)
App.deferReadiness();

// Prevent the router from manipulating the browser's URL.
App.Router.reopen({location: 'none'});

beforeEach(function(done) {
  // Fake XHR
  server = sinon.fakeServer.create();

  Ember.run(function() {

    // Advance Contagion readiness, which was deferred above.
    App.advanceReadiness();

    // Setup is complete when the Contagion readiness promise resolves
    App.then(function() {
      done();
    });
  });
});

afterEach(function() {
  // Reset App state
  App.reset();

  // Restore XHR
  server.restore();
});

私が持っている仕様は実行されて合格していますが、Chrome コンソールでは次のようなものが表示されます

x GET http://localhost:3500/posts 404 (Not Found)
x GET http://localhost:3500/comments 404 (Not Found)

sinon フェイク サーバーがこれらの要求をスタブ化しないのはなぜですか?

私は次のようなことを試しました

server.respondWith("GET", "/comments",
  [200, { "Content-Type": "application/json" },
   '{"commemnts":[{"id":1,"text":"Comment 1"},{"id":2,"text":"Comment 2"}]}'
]);

の URL のバリエーションを使用して "/comments.json""http://localhost:3500/comments"http://localhost:3500/comments.json

何も機能していないようです。

また、find メソッドをスタブ化しようとしましsinon.stub(App.Comments,"find")たが、それでも 404 エラーが表示されます。

何がうまくいかないのか、これらのリクエストをモック/スタブして意味のあるjsonを返す正しい方法はありますか?

更新 1

私が設定するserver.autoRespond = trueと、私は得る

キャッチされないエラー: 偽の XHR onreadystatechange ハンドラーが例外をスローしました: アサーションが失敗しました: テスト モードをオンにしました。これにより、実行ループの自動実行が無効になりました。Ember.run で非同期の副作用を伴うコードをラップする必要があります。

これは、すべてが Ember.run にラップされている場合でも発生します。

server.respond()afterEach 関数に追加すると、同じ Fake XHR onreadystatechange エラーが発生します。

追加する

Ember.run(function(){
  server.respond();
});

afterEach 関数に戻ると、404 エラーで正方形 1 に戻ります

4

1 に答える 1