Как загрузить помощники перед 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"

0 ответов

Другие вопросы по тегам