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();
, В противном случае сервер получает запрос, но ничего не делает.