1

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 でこれを処理するために使用できるツールは大幅に変更されています。)

4

1 に答える 1