Как импортировать файл для тестирования кармы - javascript в rails? - PullRequest
0 голосов
/ 29 декабря 2018

Я использую Karma для модульного тестирования некоторых моих сценариев, которые являются частью моего приложения rails, но у меня возникают проблемы с импортом файла 'utility.js', в котором есть несколько служебных функций, которые я использую в своем коде.Это прекрасно работает, когда я запускаю приложение rails, мой манифест загружает файл первым, а функции доступны по всему миру, но когда я использую этот код в верхней части моего файла теста кармы, функция make_index_array() определяется в полезности.JS не найден.make_index_array () вызывается одним из методов в тестируемом классе I (DetailBudget).

import  "../../app/assets/javascripts/utility.js"
import {DetailBudget} from "../../app/assets/javascripts/budgeting_scripts/detail_budget_classes.js"

Вот сообщение об ошибке:

START:
Chrome 71.0.3578 (Mac OS X 10.14.2) ERROR
  {
    "message": "An error was thrown in afterAll\nUncaught ReferenceError: make_index_array is not defined",
    "str": "An error was thrown in afterAll\nUncaught ReferenceError: make_index_array is not defined"
  }
  Confirm test setup
    ✔  does works

Finished in 0.002 secs / 0.002 secs @ 10:57:35 GMT-0800 (Pacific Standard Time)

Вот функция make_index_array какопределено в utility.js:

function make_index_array(low, high) {
    let list = [];
    for (let i = low; i <= high; i++) {
        list.push(i);
    }
    return list;
}

Karma настроен на использование ChromeBrowser с Rails 5.2 (в этом наборе есть два теста, первый из которых (тот, который проходит) только для того, чтобы убедиться, чтонастройка работает.

1 Ответ

0 голосов
/ 02 января 2019

Если вам нужно импортировать некоторый внешний файл js в модульных тестах, то вам также следует настроить его в karma.conf.js.

Пример:

module.exports = function (config) {
  config.set({
  ...
  files: [
    "<Utility.js file location from this config file location>"
  ],
  ...
  });
};

Если путь вашего utility.js из karma.conf.js равно ../../app/assets/javascripts/utility.js, тогда ваша конфигурация в karma.conf.js будет:

module.exports = function (config) {
  config.set({
  ...
  files: [
    "../../app/assets/javascripts/utility.js"
  ],
  ...
  });
};

Для получения дополнительной информации о конфигурации files см .: https://karma -runner.github.io/1.0/config/files.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...