在哪里使用 Pretender 启用 Ember Qunit 与 rails-csrf 的集成测试?
Where do I use Pretender to enable Ember Qunit integration tests with rails-csrf?
我们正在使用 rails-csrf in our ember-cli app. The README on rails-csrf says:
Be sure to mock out the call to the csrf server endpoint. Otherwise your tests will fail with
"error while processing route: [route]"
messages in the browser console. For example:
server = new Pretender(function() {
this.get('/csrf', function(request) {
return [200, {"Content-Type": "application/json"},
JSON.stringify({
"authenticity_token": "token"
})
];
});
});
我理解这里的问题(我们的集成测试确实显示了这个错误)并且我理解 Pretender solves it. I've got Pretender installed via 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
调用正在返回一个承诺;目前尚不清楚这是否符合预期并得到解决。
(此问题表面上与 this older one 类似,但 Ember 中用于处理此问题的可用工具已发生重大变化。)
我将我们的应用程序从 ember-cli 0.1.12 和 ember 1.8.1 更新为 ember-cli 0.2.0 和 ember 1.10.0。 我还将 Pretender 更新到 0.6.0(ember-cli-pretender 包安装在 0.1.0)。 这本身并没有解决任何问题,但确实导致了集成测试失败的显着变化。现在,Pretender 正在拦截数据请求并返回错误,因为我没有为它们定义处理程序。
Error: Pretender intercepted GET /our/api/data/:id but no handler was defined for this type of request
所以问题不再是 Ember,而是我的 Pretender 配置问题。一旦我模拟了对 API 的数据请求,我们就关闭了 运行.
tl;dr 请确保您拥有最新版本的 Pretender。
我们正在使用 rails-csrf in our ember-cli app. The README on rails-csrf says:
Be sure to mock out the call to the csrf server endpoint. Otherwise your tests will fail with
"error while processing route: [route]"
messages in the browser console. For example:
server = new Pretender(function() {
this.get('/csrf', function(request) {
return [200, {"Content-Type": "application/json"},
JSON.stringify({
"authenticity_token": "token"
})
];
});
});
我理解这里的问题(我们的集成测试确实显示了这个错误)并且我理解 Pretender solves it. I've got Pretender installed via 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
调用正在返回一个承诺;目前尚不清楚这是否符合预期并得到解决。
(此问题表面上与 this older one 类似,但 Ember 中用于处理此问题的可用工具已发生重大变化。)
我将我们的应用程序从 ember-cli 0.1.12 和 ember 1.8.1 更新为 ember-cli 0.2.0 和 ember 1.10.0。 我还将 Pretender 更新到 0.6.0(ember-cli-pretender 包安装在 0.1.0)。 这本身并没有解决任何问题,但确实导致了集成测试失败的显着变化。现在,Pretender 正在拦截数据请求并返回错误,因为我没有为它们定义处理程序。
Error: Pretender intercepted GET /our/api/data/:id but no handler was defined for this type of request
所以问题不再是 Ember,而是我的 Pretender 配置问题。一旦我模拟了对 API 的数据请求,我们就关闭了 运行.
tl;dr 请确保您拥有最新版本的 Pretender。