Ember.js Konacha sinon.fakeServer ничего не делает

У меня настроено приложение ember.js, я использую ember.js 1.0.0-rc4 и ember-data 0.13, я пытаюсь настроить konacha с помощью mocha.js, похожего на этот https://github.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

Ничто не похоже на работу.

Я также пытался заглушить метод поиска с sinon.stub(App.Comments,"find") но я все еще вижу 404 ошибки.

Любая идея, что идет не так, или правильный способ, чтобы макетировать / заглушить эти запросы и вернуть значимый JSON?

ОБНОВЛЕНИЕ 1

Когда я установил server.autoRespond = true я получил

Uncaught Error: Ложный XHR-обработчик onreadystatechange вызвал исключение: утверждение не выполнено: вы включили режим тестирования, который отключил автозапуск цикла выполнения. Вам нужно будет обернуть любой код асинхронными побочными эффектами в Ember.run.

Это происходит, даже когда все завернуто в Ember.run.

Добавление server.respond() к функции afterEach Приводит к той же самой ошибке Fake XHR onreadystatechange.

Добавление

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

Функция afterEach возвращает меня в квадрат 1 с 404 ошибками.

1 ответ

У вас есть эфир, настроить сервер на автоответчик server.autoRespond = true; или триггер сервер отвечает server.respond();, В противном случае сервер получает запрос, но ничего не делает.

Другие вопросы по тегам