के अंतर्निहित निर्माण को रोकता है, इसलिए, यह एक दिलचस्प समस्या थी जिसमें मैं दौड़ रहा था।अपरिभाषित | 0 | संदर्भ त्रुटि: सख्त मोड वैश्विक संपत्ति 'csrf_token'
मैं वर्तमान में एक backbone.js - रेल ऐप बना रहा हूं। आम तौर पर सीखने के उद्देश्यों के लिए इसे बनाना। मैं (किसी भी अच्छे रेल देव की तरह) टीडीडी/बीडीडी में अपना सर्वश्रेष्ठ प्रदर्शन कर रहा हूं और मैं कैपिबरा के साथ एक समस्या में भाग गया।
मेरे पास एक एकीकरण नमूना है जो केवल 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
मैं जैस्मीन, साइनऑन, और कैपिबारा/आरएसपीसी/वेबकिट के साथ परीक्षण चला रहा हूं। मैं thinkbot (रास्ते से भयानक पुस्तक) द्वारा "रुपये पर रूपेक्स" पुस्तक दोनों का पालन कर रहा हूं, और यह ट्यूटोरियल: 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'
मैं इस बाहर छँटाई वास्तव में है क्योंकि वहाँ कुछ भी नहीं इस त्रुटि के लिए गूगल करने योग्य एक लंबे समय ले लिया।
आखिर में मैंने जेएस में "सख्त मोड का उपयोग" का उपयोग करके ठोकर खाई। अनिवार्य रूप से यह कुछ नए ईएमसीए 5 स्क्रिप्ट सम्मेलनों का उपयोग करेगा। यह अधिक कोडिंग ब्लूपर पकड़ लेगा, और आपको वैश्विक चरों तक पहुंचने से रोक देगा। सभी अच्छी चीज़ें।
तो मैं जाँच, और मेरे sinon.js फ़ाइल में, मैं देख रहा हूँ:
"use strict";
फ़ाइल की लाइन 36 पर। लो और देखो मैं लाइन पर टिप्पणी करता हूं, और मेरे परीक्षण ठीक काम करते हैं।
यहां मेरा प्रश्न है: सख्त गड़बड़ सीएसआरएफ का उपयोग क्यों किया? मुझे लगता है कि यह मेरे रेल लेआउट में csrf_meta_tags के साथ कुछ करने के लिए है। यदि संभव हो तो मैं इस लाइन को वापस साइनऑन जेएस में रखना चाहूंगा क्योंकि मुझे लगता है कि यह "सही काम करने के लिए"
क्या किसी के पास इस पर अधिक जानकारी है? मैं पहले से किसी भी विवरण की सराहना करता हूं !!