我们在我们的 ember-cli 应用程序中使用rails-csrf 。rails-csrf 上的 README说:
请务必模拟对 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是如何解决它的。我已经通过ember-cli-pretender安装了 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 中处理这个问题的可用工具已经发生了显着变化。)