Quindi, questo è stato un problema piuttosto interessante in cui mi sono imbattuto.undefined | 0 | ReferenceError: la modalità Strict impedisce la creazione implicita della proprietà globale "csrf_token"
Attualmente sto costruendo un backbone.js - app Rails. Generalmente solo costruendo questo per scopi di apprendimento. Io sono (come qualsiasi buon dev rails) facendo del mio meglio con TDD/BDD e mi sono imbattuto in un problema con capibara.
Ho una specifica di integrazione che si limita a testare i lavori root_path (inizia la cronologia di backbone, visualizza le informazioni iniziali, ecc ...).
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
Sono in esecuzione test con jasmine, sinon e capybara/rspec/webkit. Sto seguendo vagamente sia il libro "Rspec on Rails" di thoughtbot (fantastico libro tra l'altro), sia questo tutorial: http://tinnedfruit.com/2011/03/03/testing-backbone-apps-with-jasmine-sinon.html.
Quando si esegue le specifiche di cui sopra, mi sono imbattuto in questo errore:
undefined|0|ReferenceError: Strict mode forbids implicit creation of global property 'csrf_token'
ho preso un lungo periodo di tempo l'ordinamento questo fuori perché non c'è davvero nulla di google-in grado per questo errore.
Eventualmente mi sono imbattuto in "use strict-mode" in JS. Essenzialmente questo utilizzerà alcune nuove convenzioni di script EMCA5. Catturerà più blooper di codice e ti impedirà di accedere alle variabili globali. Tutte cose buone.
Così ho controllare, e nel mio file sinon.js, vedo:
"use strict";
sulla linea 36 del file. Ecco perché commento la battuta, e i miei test funzionano bene.
Ecco la mia domanda: perché è stato utilizzato il csrf? Presumo che questo abbia qualcosa a che fare con csrf_meta_tags nel mio layout di rails. Se possibile, vorrei riassumere questa riga in sinon js poiché presumo che sia la "cosa giusta da fare"
Qualcuno ha ulteriori informazioni su questo? Apprezzo tutti i dettagli in anticipo !!