Как загрузить помощники перед JS исходными файлами в Jasmine
Этот вопрос специально, потому что я использую gon
, но концептуально это может относиться к другим случаям, поэтому я попытался немного расширить его. Gon - изящный гем, который позволяет вам объявить переменную в вашем контроллере Rails и затем использовать ее в вашем Javascript. Например:
def index
gon.this = "that"
end
// index.html
<script>
console.log(gon.this)
// would print "that"
</script>
Конкретно, как это происходит, Гон вводит фрагмент скрипта, который объявляет глобальную переменную, например так:
<script>
window.gon = {}
gon.this = "that"
</script>
Код, который я использую для тестирования Jasmine, выглядит следующим образом:
// test.js
function loadProperPage() {
if (gon.this == "that") {
...
} else {
...
}
}
Итак, как вы можете видеть, gon
используется немедленно! Моя проблема в том, что Жасмин продолжает говорить, что gon
не был определен, поэтому я не уверен, как "ввести" его так, чтобы это было семантически разумно. Единственный способ придумать, где это имеет смысл, - это создать .js
файл и требовать его в качестве исходного файла в моем javascript.yml
прежде чем загрузить файл, который я тестирую. То есть это будет выглядеть так:
src_files:
- assets/gon_variables.js
- assets/test.js
Но это не устойчивое решение, потому что тогда я не могу изменить фиктивные переменные в gon_variables.js
файл для разных спецификаций...
Под этим последним предложением я имею в виду, что я устранял неполадки и обнаружил, что gon
Переменные в приборе или в самом файле спецификации НЕ будут работать. Т.е. оба приведенных ниже НЕ решают проблему
/////// spec file approach
//spec file
describe...
beforeEach(function() {
gon.this = "that"
})
})
/////// fixture file approach
// spec file
describe...
beforeEach(function() {
loadFixtures('test.html')
})
})
// test.html fixture
<head>
<script>
var gon = {permission: "new"}
</script>
</head>
<body>
...
</body>
Что возвращает меня к моему вопросу. Моя отладка, очевидно, показывает, что файлы JS в jasmine.yml
загружаются ДО или приспособления или файл спецификации (и его до действия). Поэтому, как еще вы можете загрузить динамический код до того, как файлы JS jasmine.yml
? Есть ли помощник, который я могу использовать или...? Имейте в виду, что весь смысл в том, что я хотел бы изменить код, который загружаю перед файлами JS, в зависимости от спецификации. Т.е. иногда хочется иметь gon.this = "that"
но в других случаях я хотел бы gon.this = "those"