Как загрузить свои занятия в Jest? - PullRequest
0 голосов
/ 19 февраля 2019

Так что этот вопрос кажется действительно глупым, но я искал и искал, и не нашел ответа.

Я пробую Jest Framework для модульного тестирования моего пользовательского проекта javascript, которыйне используя React или любой другой фреймворк.Моя структура проекта в настоящее время выглядит следующим образом:

  • project
    • js
      • main.js <- все мои классы здесь, стиль es6, если это имеет значение</li>
    • - тесты--
      • card.test.js <- тесты здесь </li>

Внутри main.js определен класс Card.Я сомневаюсь, что есть какие-то проблемы с файлом, так как я отлично его запустил в браузере.

"use strict";

class Card 
{
  ...
}

Один тест, который я написал до сих пор, просто чтобы посмотреть, работает ли он:

require('../js/main.js');

test("stuff", () => {
    let card = new Card(1, 1);
});

Когда я пытаюсь запустить тест:

yarn test

Но все, что я получаю, это:

    ReferenceError: Card is not defined

      2 |
      3 | test("stuff", () => {
    > 4 |       let card = new Card(1, 1);
        |                  ^
      5 | });

      at Object.<anonymous>.test (__tests__/card.test.js:4:13)

Кажетсякак main.js загружается, потому что, если я добавлю в него console.log (), он получит вывод при запуске теста.Так почему же вы жалуетесь, что карта не определена?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Я получил кое-что, что, кажется, работает, хотя с использованием модулей ES6.

  1. Я изменил все классы в main.js на модули (а также разделил их на views.js, контроллеры.js и models.js):
"use strict";

export class Card 
{
  ...
}
Я установил некоторые модули Babel Node через пряжу:
yarn add --dev @babel/core @babel/cli @babel/preset-env
Я добавил файл .babelrc в корень моего проекта:
{
    "presets": ["@babel/preset-env"]
}
Я изменил свой тест, чтобы соответствовать тому, что предложил Андре
const { Card } = require('../js/models.js');

test("stuff", () => {
    let card = new Card(1, 1);
});

Теперь нет ошибок при запуске

yarn test

0 голосов
/ 19 февраля 2019

Вы должны экспортировать карты в файле main.js, чтобы они были доступны в других файлах

// main.js
module.exports = { Card }

, а затем указать их в тестовом файле

const { Card } = require('../js/main.js');
...