2013-06-19 3 views
2

У меня установлено приложение ember.js, я использую ember.js 1.0.0-rc4 и ember-data 0.13, я пытаюсь получить konacha установка с mocha.js похожа на это https://github.com/dgeb/ember_data_example.Ember.js Konacha sinon.fakeServer ничего не делает

Моего 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(); 
}); 

спецификация, что у меня есть работает и прохождение, но в хромированной консоли, я вижу такие вещи, как

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

Почему не Sinon подделки сервер, заглушающий эти запросы?

Ive пытался что-то вроде

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?

UPDATE 1

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

Uncaught Error: Fake XHR onreadystatechange handler threw exception: assertion failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in an Ember.run.

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

Добавление server.respond() к функции afterEach Результаты в той же ошибке Fake XHR onreadystatechange.

Добавление

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

Для функции afterEach получает меня обратно к площади 1 с 404 ошибки

+0

Я могу видеть, как вы завершаете тестовый код в «Em.run», но как насчет того, что делает эти GET («App.advanceReadiness()??)? – Bluu

+0

Вы когда-нибудь это поняли? – Mawaheb

ответ

0

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

+0

Это не сработало, но оно что-то делало, см. Обновление 1. – Intentss

Смежные вопросы