Jest, jquery и получение тестовых файлов - PullRequest
1 голос
/ 03 ноября 2019

Недавно унаследовали много унаследованного кода (код jquery с js без ES6) без добавления тестов.

Что было решено, так это добавить тест в каждый вновь созданный метод / функцию, изменения пользовательского интерфейса и т. Д., ИспользуяJEST.

В связи с этим возникает вопрос:

  1. Можно ли проверить файлы * .js, не являющиеся модулями? я имею в виду файл, содержащий код, работающий на DOM, внедренный в HEAD через <script src="../path_to_script.js></script>, и он не связан.
  2. и если «да» на вопрос 1, каким образом я должен назвать код тестирования? я могу сделать это с помощью require ()?

До сих пор были созданы тесты, содержащие код внутри тестов, то есть:

// elemenytest.spec.js    
jest.dontMock('jquery').dontMock('fs');
  describe('Test', ()=>{
    it('should check jquery element', ()=>{
    let str = "<li class='_class'>I am an element</li>";
    expect( $(str).hasClass('_class')).toBeTruthy();
  });
});

, однако это не самый эффективный способ, и хотелось быизбегайте этого и работайте с «настоящими» файлами.

1 Ответ

0 голосов
/ 12 ноября 2019

Хорошо, удалось разрешить его.

page.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <header class="header_main--font">header</header>
    <main>
        <h3>main body</h3>
    </main>
</body>
</html>

, чтобы проверить его проанализированный файл с узлом, добавленное содержимое файла к документу и используемые jest-jquery-matchersпроверить, были ли выполнены критерии.

jest.dontMock('jquery');
const $ = require('jquery');
var fs = require('fs');
const matchers = require('jest-jquery-matchers');

describe('should header', () => {
    beforeAll(() => {
        var f = fs.readFileSync('./page.html', 'utf-8');
        document.documentElement.innerHTML = f;
    });

    beforeEach(function () {
        jest.addMatchers(matchers);
    });

    test('exists in body', () => {
        expect( $('body').find('header') ).toExist();
    });

    test('have text', () => {
        expect( $('header') ).toHaveText('header');
    });

    test('should have class', ()=>{
        expect( $('header') ).toHaveClass('header_main--font');
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...