undefined | 0 | ReferenceError: Строгий режим запрещает неявное создание глобального свойства 'csrf_token'
Итак, это была довольно интересная проблема, с которой я столкнулся.
В настоящее время я создаю приложение backbone.js - Rails. Как правило, просто построение этого в учебных целях. Я (как любой хороший разработчик рельсов) стараюсь изо всех сил в TDD / BDD, и я столкнулся с проблемой с капибарой.
У меня есть спецификация интеграции, которая просто проверяет работоспособность root_path (запускается история Backbone, отображается начальная информация и т. Д.).
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. Я слабо следую за "Rspec on Rails " книга от mindbot (кстати, потрясающая книга) и этот урок: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. По сути это будет использовать некоторые новые соглашения о скриптах EMCA5. Он поймает больше блоков кодирования и защитит вас от доступа к глобальным переменным. Все хорошее.
Итак, я проверяю, и в моем файле sinon.js я вижу:
"use strict";
в строке 36 файла. И вот, я закомментирую строку, и мои тесты работают просто отлично.
Вот мой вопрос: почему использовался строгий беспорядок csrf? Я предполагаю, что это как-то связано с csrf_meta_tags в моей раскладке рельсов. Если возможно, я хотел бы вернуть эту строку в sinon JS, так как я предполагаю, что это "правильно делать
У кого-нибудь есть больше информации по этому поводу? Я ценю любые детали заранее!