Мы используем rails-csrf в нашем приложении ember-cli. README на rails-csrf говорит:
Обязательно имитируйте вызов конечной точки csrf-сервера. В противном случае ваши тесты не пройдут с
"error while processing route: [route]"
сообщения в консоли браузера. Например:
server = new Pretender(function() {
this.get('/csrf', function(request) {
return [200, {"Content-Type": "application/json"},
JSON.stringify({
"authenticity_token": "token"
})
];
});
});
Я понимаю проблему здесь (наши интеграционные тесты действительно показывают эту ошибку), и я понимаю, как Pretender решает ее . У меня установлен Pretender с помощью ember-cli-pretender.
Я не понимаю, как убедиться, что этот фрагмент кода - конфигурация для имитации Pretender - работает. Я установил его в блоке setup
модуля тестирования интеграции, и он вызывается, но ошибка все еще присутствует, и тесты все еще не проходят.
Вот текущее нерабочее состояние:
module('Integration test', {
setup: function() {
App = startApp();
var server = new Pretender(function() {
this.get('/our/api/for/csrf', function(request) {
return [200, {"Content-Type": "application/json"},
JSON.stringify({
"authenticity_token": "token"
// I've also tried putting a real token from the server here instead of "token"
})
];
});
});
},
teardown: function() {
Ember.run(App, App.destroy);
}
});
Макет вызывается, но того, что он возвращает, явно недостаточно для rails-csrf. Похоже, что вызов beforeModel
в маршруте приложения возвращает обещание; неясно, ожидается ли это и решается ли это.
(Этот вопрос внешне похож на этот более старый вопрос, но доступные инструменты для его решения в Ember значительно изменились.)
setup
должно работать, это правильное место для этого. Поищите что-нибудь еще, что может быть не так. - person givanse   schedule 26.02.2015server
var, которой я назначаю экземпляр Pretender? Или это имеет значение? - person pjmorse   schedule 26.02.2015