我们正在使用
rails-csrf
在我们的ember cli应用程序中。rails上的自述文件csrf
says
:
确保模拟对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
.
我不明白的是,如何确保这个代码片段——假装模拟的配置——正常工作。我已将其安装在
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
应用程序路由中的调用返回承诺;目前还不清楚这是否是预期的,是否正在解决。
(这个问题表面上类似于
this older one
,但Ember中处理此问题的可用工具发生了重大变化。)