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
アプリケーション ルートの呼び出しが promise を返しているようです。それが予想され、解決されているかどうかは明らかではありません。
(この質問は表面的にはこの古い質問に似ていますが、Ember でこれを処理するために使用できるツールは大幅に変更されています。)