ですから、これは私が遭遇した非常に興味深い問題でした。
私は現在backbone.jsを構築しています-Railsアプリ。通常、これは学習目的で作成するだけです。私は(他の優れたRails開発者と同様に)TDD / BDDで最善を尽くしており、カピバラで問題が発生しました。
root_pathの動作をテストするだけの統合仕様があります(バックボーン履歴の開始、初期情報の表示など)。
require 'spec_helper'
describe "RentalProperties", js: true do
describe "GET /" do
it "should show a list of properties" do
visit root_path
eventually{page.should have_content("Something")}
end
end
end
ジャスミン、シノン、カピバラ/ rspec/webkitでテストを実行しています。私はthoughtbotによる「RspeconRails」の本(ちなみに素晴らしい本)とこのチュートリアルの両方を大まかにフォローしています:http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine- sinon.html。
上記の仕様を実行しているときに、次のエラーが発生しました。
undefined|0|ReferenceError: Strict mode forbids implicit creation of global property 'csrf_token'
このエラーをグーグルで検索できるものは実際にはないので、これを整理するのに長い時間がかかりました。
結局、JSで「usestrict-mode」を使用していることに気づきました。基本的に、これはいくつかの新しいEMCA5スクリプト規則を使用します。より多くのコーディングNG集をキャッチし、グローバル変数にアクセスできなくなります。いいこと。
だから私はチェックします、そして私のsinon.jsファイルで、私は見ます:
"use strict";
ファイルの36行目。見よ、私はその行をコメントアウトし、私のテストはうまく機能している。
ここに私の質問があります:なぜ厳密な混乱csrfを使用したのですか?これは私のrailsレイアウトのcsrf_meta_tagsと関係があると思います。可能であれば、この行をsinon jsに戻したいと思います。これは、「正しいこと」だと思います。
誰かがこれについてもっと情報を持っていますか?よろしくお願いします!!