Шпаргалка по Jest с примерами кода

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126
Шпаргалка по Jest (Stylesheet Jest)

Базовая структура теста​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<span class="pl-en">describe</span><span class="pl-kos">(</span><span class="pl-s">'Выбор цвета'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-en">beforeAll</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">/* Запускается перед всеми тестами */</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">afterAll</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">/* Запускается после всех тестов */</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">beforeEach</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">/* Запускается перед каждым тестом */</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">afterEach</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">/* Запускается после каждого теста */</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Выбираем цвет'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">actual</span> <span class="pl-c1">=</span> <span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Bob'</span><span class="pl-kos">,</span> <span class="pl-s">'John'</span><span class="pl-kos">]</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">actual</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Pink Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Pink Bob'</span><span class="pl-kos">,</span> <span class="pl-s">'Pink John'</span><span class="pl-kos">]</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Поиск совпадений​

Базовый поиск совпадений​

1
2
3
4
5
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">42</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">42</span><span class="pl-kos">)</span> <span class="pl-c">// Строгое равенство (===)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">42</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">not</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">3</span><span class="pl-kos">)</span> <span class="pl-c">// Строгое неравенство (!==)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">]</span><span class="pl-kos">)</span> <span class="pl-c">// Глубокое сравнение</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">undefined</span><span class="pl-kos">,</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-c">// Глубокое сравнение</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">undefined</span><span class="pl-kos">,</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">not</span><span class="pl-kos">.</span><span class="pl-en">toStrictEqual</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-c">// Строгое сравнение</span>

Определение истинности​

1
2
3
4
5
6
7
8
9
10
11
12
<span class="pl-c">// Совпадает с истинными значениями</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'foo'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeTruthy</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// Совпадает с ложными значениями</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">''</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeFalsy</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// Совпадает только с `null`</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">null</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeNull</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// Совпадает только с `undefined`</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">undefined</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeUndefined</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// Значение должно быть определено</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">7</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeDefined</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// Совпадает с `true` или `false`</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Boolean</span><span class="pl-kos">)</span><span class="pl-kos">)</span>

Числа​

1
2
3
4
5
6
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeGreaterThan</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeGreaterThanOrEqual</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeLessThan</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeLessThanOrEqual</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-c1">0.2</span> <span class="pl-c1">+</span> <span class="pl-c1">0.1</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeCloseTo</span><span class="pl-kos">(</span><span class="pl-c1">0.3</span><span class="pl-kos">,</span> <span class="pl-c1">5</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">NaN</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Number</span><span class="pl-kos">)</span><span class="pl-kos">)</span>

Строки​

1
2
3
4
5
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'длинная строка'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatch</span><span class="pl-kos">(</span><span class="pl-s">'стр'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'строка'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">String</span><span class="pl-kos">)</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'кофе'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatch</span><span class="pl-kos">(</span><span class="pl-pds">/ф/</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'пицца'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">not</span><span class="pl-kos">.</span><span class="pl-en">toMatch</span><span class="pl-kos">(</span><span class="pl-s">'кофе'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'пицца'</span><span class="pl-kos">,</span> <span class="pl-s">'кофе'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">stringContaining</span><span class="pl-kos">(</span><span class="pl-s">'цц'</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">stringMatching</span><span class="pl-kos">(</span><span class="pl-pds">/ф/</span><span class="pl-kos">)</span><span class="pl-kos">]</span><span class="pl-kos">)</span>

 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Массивы​

1
2
3
4
5
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Array</span><span class="pl-kos">)</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Bob'</span><span class="pl-kos">,</span> <span class="pl-s">'John'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveLength</span><span class="pl-kos">(</span><span class="pl-c1">3</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Bob'</span><span class="pl-kos">,</span> <span class="pl-s">'John'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toContain</span><span class="pl-kos">(</span><span class="pl-s">'Alice'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toContainEqual</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Bob'</span><span class="pl-kos">,</span> <span class="pl-s">'John'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">arrayContaining</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-s">'Alice'</span><span class="pl-kos">,</span> <span class="pl-s">'Bob'</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">)</span>

Объекты​

1
2
3
4
5
6
7
8
9
10
11
12
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveProperty</span><span class="pl-kos">(</span><span class="pl-s">'a'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveProperty</span><span class="pl-kos">(</span><span class="pl-s">'a'</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-kos">{</span> <span class="pl-c1">b</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveProperty</span><span class="pl-kos">(</span><span class="pl-s">'a.b'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchObject</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchObject</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
<span class="pl-c1">a</span>: <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Number</span><span class="pl-kos">)</span><span class="pl-kos">,</span>
<span class="pl-c1">b</span>: <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Number</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-c1">1</span> <span class="pl-kos">}</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">b</span>: <span class="pl-c1">2</span> <span class="pl-kos">}</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">objectContaining</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">a</span>: <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Number</span><span class="pl-kos">)</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">,</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">anything</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">]</span><span class="pl-kos">)</span>

Исключения​

1
2
3
4
<span class="pl-c">// const fn = () =&gt; { throw new Error('Упс!') }</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toThrow</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toThrow</span><span class="pl-kos">(</span><span class="pl-s">'Упс'</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toThrowErrorMatchingSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Снимки​

1
2
3
4
5
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">node</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">user</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">{</span>
<span class="pl-c1">date</span>: <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Date</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">user</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchInlineSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

Функция для создания «моков» (фикций)​

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<span class="pl-c">// const fn = jest.fn()</span>
<span class="pl-c">// const fn = jest.fn().mockName('Единорог') - именованная фикция</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeCalled</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// Функция была вызвана</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">not</span><span class="pl-kos">.</span><span class="pl-en">toBeCalled</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// Функция *не была* вызвана</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenCalledTimes</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span> <span class="pl-c">// Функция была вызвана один раз</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeCalledWith</span><span class="pl-kos">(</span><span class="pl-s1">arg1</span><span class="pl-kos">,</span> <span class="pl-s1">arg2</span><span class="pl-kos">)</span> <span class="pl-c">// Любой вызов функции сопровождался указанными аргументами</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenLastCalledWith</span><span class="pl-kos">(</span><span class="pl-s1">arg1</span><span class="pl-kos">,</span> <span class="pl-s1">arg2</span><span class="pl-kos">)</span> <span class="pl-c">// При последнем вызове функции, ей были переданы указанные аргументы</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenNthCalledWith</span><span class="pl-kos">(</span><span class="pl-s1">args</span><span class="pl-kos">)</span> <span class="pl-c">// Определенный вызов функции сопровождался указанными аргументами</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveReturnedTimes</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span> <span class="pl-c">// Функция возвращает значения без ошибок</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveReturnedWith</span><span class="pl-kos">(</span><span class="pl-s1">value</span><span class="pl-kos">)</span> <span class="pl-c">// Функция возвращает указанное значение</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveLastReturnedWith</span><span class="pl-kos">(</span><span class="pl-s1">value</span><span class="pl-kos">)</span> <span class="pl-c">// Последний вызов функции вернул указанное значение</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveNthReturnedWith</span><span class="pl-kos">(</span><span class="pl-s1">value</span><span class="pl-kos">)</span> <span class="pl-c">// Определенный вызов функции вернул указанное значение</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">.</span><span class="pl-c1">mock</span><span class="pl-kos">.</span><span class="pl-c1">calls</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">'first'</span><span class="pl-kos">,</span> <span class="pl-s">'call'</span><span class="pl-kos">,</span> <span class="pl-s">'args'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-s">'second'</span><span class="pl-kos">,</span> <span class="pl-s">'call'</span><span class="pl-kos">,</span> <span class="pl-s">'args'</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span> <span class="pl-c">// Несколько вызовов</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">fn</span><span class="pl-kos">.</span><span class="pl-c1">mock</span><span class="pl-kos">.</span><span class="pl-c1">calls</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span> <span class="pl-c">// fn.mock.calls[0][0] — первый аргумент первого вызова</span>

«Алиасы» (синонимы)
  • toBeCalled → toHaveBeenCalled
  • toBeCalledWith → toHaveBeenCalledWith
  • lastCalledWith → toHaveBeenLastCalledWith
  • nthCalledWith → toHaveBeenNthCalledWith
  • toReturnTimes → toHaveReturnedTimes
  • toReturnWith → toHaveReturnedWith
  • lastReturnedWith → toHaveLastReturnedWith
  • nthReturnedWith → toHaveNthReturnedWith
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Примеси​

1
2
3
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-k">new</span> <span class="pl-v">A</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeInstanceOf</span><span class="pl-kos">(</span><span class="pl-v">A</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">any</span><span class="pl-kos">(</span><span class="pl-v">Function</span><span class="pl-kos">)</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s">'пицца'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">anything</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">)</span>

Поиск совпадений с промисами​

1
2
3
4
5
6
7
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Разрешенным значением должен быть "лимон"'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-c">// Не забудьте добавить оператор `return`</span>
<span class="pl-k">return</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">resolve</span><span class="pl-kos">(</span><span class="pl-s">'лимон'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">resolves</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s">'лимон'</span><span class="pl-kos">)</span>
<span class="pl-k">return</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">reject</span><span class="pl-kos">(</span><span class="pl-s">'осьминог'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">rejects</span><span class="pl-kos">.</span><span class="pl-en">toBeDefined</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-k">return</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">reject</span><span class="pl-kos">(</span><span class="pl-v">Error</span><span class="pl-kos">(</span><span class="pl-s">'пицца'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">rejects</span><span class="pl-kos">.</span><span class="pl-en">toThrow</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Или с помощью async/await:
1
2
3
4
5
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Разрешенным значением должен быть "лимон"'</span><span class="pl-kos">,</span> <span class="pl-k">async</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">2</span><span class="pl-kos">)</span>
<span class="pl-k">await</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">resolve</span><span class="pl-kos">(</span><span class="pl-s">'лимон'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">resolves</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s">'лимон'</span><span class="pl-kos">)</span>
<span class="pl-k">await</span> <span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">resolve</span><span class="pl-kos">(</span><span class="pl-s">'лимон'</span><span class="pl-kos">)</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-c1">resolves</span><span class="pl-kos">.</span><span class="pl-c1">not</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s">'осьминог'</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Асинхронные тесты​

Хорошей практикой считается определение количества ожидаемых утверждений (assertions) в асинхронных тестах, тест провалится, если утверждения не будут вызваны.
1
2
3
4
5
6
7
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Асинхронный тест'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">3</span><span class="pl-kos">)</span> <span class="pl-c">// В процессе тестирования вызывается ровно три утверждения</span>
<span class="pl-c">// или</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">hasAssertions</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// В процессе тестирования вызывается по крайней мере одно утверждение</span>

<span class="pl-c">// Далее следуют асинхронные тесты</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Обратите внимание, что вы также можете делать это в файле, за пределами любых describe и test:
1<span class="pl-en">beforeEach</span><span class="pl-kos">(</span><span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-c1">hasAssertions</span><span class="pl-kos">)</span>
Это обеспечит присутствие хотя бы одного утверждения в процессе тестирования. Это также подходит для случаев, когда ожидается конкретное число утверждений — expect.assertions(3).

async/await​

1
2
3
4
5
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Асинхронный тест'</span><span class="pl-kos">,</span> <span class="pl-k">async</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-k">const</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-k">await</span> <span class="pl-en">runAsyncOperation</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">result</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Промисы​

1
2
3
4
5
6
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Асинхронный тест'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-k">return</span> <span class="pl-en">runAsyncOperation</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">then</span><span class="pl-kos">(</span><span class="pl-s1">result</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">result</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Коллбек done()​

Утверждение должно быть обернуто в блок try/catch, иначе Jest будет игнорировать ошибки:
1
2
3
4
5
6
7
8
9
10
11
12
13
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Асинхронный тест'</span><span class="pl-kos">,</span> <span class="pl-s1">done</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">assertions</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-en">runAsyncOperation</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">setTimeout</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">try</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-en">getAsyncOperationResult</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">result</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span>
<span class="pl-en">done</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span> <span class="pl-k">catch</span> <span class="pl-kos">(</span><span class="pl-s1">err</span><span class="pl-kos">)</span> <span class="pl-kos">{</span>
<span class="pl-s1">done</span><span class="pl-kos">.</span><span class="pl-en">fail</span><span class="pl-kos">(</span><span class="pl-s1">err</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Фикции​

Функции для создания фикций​

1
2
3
4
5
6
7
8
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Вызов коллбека'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBeCalled</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">.</span><span class="pl-c1">mock</span><span class="pl-kos">.</span><span class="pl-c1">calls</span><span class="pl-kos">[</span><span class="pl-c1">0</span><span class="pl-kos">]</span><span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">.</span><span class="pl-c1">baz</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s">'пицца'</span><span class="pl-kos">)</span> <span class="pl-c">// Второй аргумент первого вызова</span>
<span class="pl-c">// Отслеживаем первый и последний аргументы, но игнорируем второй</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenLastCalledWith</span><span class="pl-kos">(</span><span class="pl-s">'мясо'</span><span class="pl-kos">,</span> <span class="pl-s1">expect</span><span class="pl-kos">.</span><span class="pl-en">anything</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">,</span> <span class="pl-s">'маргарита'</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Вы также можете использовать снимки:
1
2
3
4
5
6
7
8
9
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Вызов коллбека'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockName</span><span class="pl-kos">(</span><span class="pl-s">'Единорог'</span><span class="pl-kos">)</span>
<span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-c">// -&gt;</span>
<span class="pl-c">// [MockFunction Единорог] {</span>
<span class="pl-c">// "calls": Array [</span>
<span class="pl-c">// ...</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

И передавать реализацию в функцию jest.fn():
1<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-c1">true</span><span class="pl-kos">)</span>

Возвращение, разрешение и отклонение значений​

Ваши фикции могут возвращать значения:
1
2
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockReturnValue</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">const</span> <span class="pl-s1">callbackOnce</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockReturnValueOnce</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

Или разрешать значения:
1
2
<span class="pl-k">const</span> <span class="pl-s1">promise</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockResolvedValue</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">const</span> <span class="pl-s1">promiseOnce</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockResolvedValueOnce</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

Они даже могут отклонять значения:
1
2
<span class="pl-k">const</span> <span class="pl-s1">failedPromise</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockRejectedValue</span><span class="pl-kos">(</span><span class="pl-s">"Роскосмос, у нас случилась оказия"</span><span class="pl-kos">)</span><span class="pl-kos">;</span>
<span class="pl-k">const</span> <span class="pl-s1">failedPromiseOnce</span> <span class="pl-
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126
Вы можете комбинировать названные подходы:
1
2
3
4
5
6
7
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">.</span><span class="pl-en">mockReturnValueOnce</span><span class="pl-kos">(</span><span class="pl-c1">false</span><span class="pl-kos">)</span>
<span class="pl-kos">.</span><span class="pl-en">mockReturnValue</span><span class="pl-kos">(</span><span class="pl-c1">true</span><span class="pl-kos">)</span><span class="pl-kos">;</span>

<span class="pl-c">// -&gt;</span>
<span class="pl-c">// вызов 1: false</span>
<span class="pl-c">// вызов 2+: true</span>

Создание фиктивных модулей с помощью метода jest.mock()​

1
2
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">mock</span><span class="pl-kos">(</span><span class="pl-s">'lodash/memoize'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">a</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">a</span><span class="pl-kos">)</span> <span class="pl-c">// Должна присутствовать реальная функция lodash/memoize</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">mock</span><span class="pl-kos">(</span><span class="pl-s">'lodash/memoize'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">a</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">a</span><span class="pl-kos">,</span> <span class="pl-kos">{</span> <span class="pl-c1">virtual</span>: <span class="pl-c1">true</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-c">// Реальная функция lodash/memoize может отсутствовать</span>

Обратите внимание, при использовании babel-jest вызовы jest.mock() будут подниматься в начало блока кода. Используйте jest.doMock() для предотвращения подобного поведения.

Создание фиктивных модулей в отдельных файлах​

  1. Создаем файл, например, __mocks__/lodash/memoize.js:
    1<span class="pl-smi">module</span><span class="pl-kos">.</span><span class="pl-en">exports</span> <span class="pl-c1">=</span> <span class="pl-s1">a</span> <span class="pl-c1">=&gt;</span> <span class="pl-s1">a</span>

  2. Добавлем его в тест:
    1<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">mock</span><span class="pl-kos">(</span><span class="pl-s">'lodash/memoize'</span><span class="pl-kos">)</span>

Методы объектов фикций​

1
2
3
<span class="pl-k">const</span> <span class="pl-s1">spy</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">spyOn</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">,</span> <span class="pl-s">'log'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockImplementation</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-smi">console</span><span class="pl-kos">.</span><span class="pl-c1">log</span><span class="pl-kos">.</span><span class="pl-c1">mock</span><span class="pl-kos">.</span><span class="pl-c1">calls</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toEqual</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">'dope'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-s">'nope'</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span>
<span class="pl-s1">spy</span><span class="pl-kos">.</span><span class="pl-en">mockRestore</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

1
2
3
<span class="pl-k">const</span> <span class="pl-s1">spy</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">spyOn</span><span class="pl-kos">(</span><span class="pl-s1">ajax</span><span class="pl-kos">,</span> <span class="pl-s">'request'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockImplementation</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-v">Promise</span><span class="pl-kos">.</span><span class="pl-en">resolve</span><span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-c1">success</span>: <span class="pl-c1">true</span> <span class="pl-kos">}</span><span class="pl-kos">)</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">spy</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenCalled</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-s1">spy</span><span class="pl-kos">.</span><span class="pl-en">mockRestore</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

Геттеры и сеттеры фикций​

Новая версия:
1
2
3
<span class="pl-k">const</span> <span class="pl-s1">location</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
<span class="pl-k">const</span> <span class="pl-s1">getTitle</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">spyOn</span><span class="pl-kos">(</span><span class="pl-s1">location</span><span class="pl-kos">,</span> <span class="pl-s">'title'</span><span class="pl-kos">,</span> <span class="pl-s">'get'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockImplementation</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-s">'пицца'</span><span class="pl-kos">)</span>
<span class="pl-k">const</span> <span class="pl-s1">setTitle</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">spyOn</span><span class="pl-kos">(</span><span class="pl-s1">location</span><span class="pl-kos">,</span> <span class="pl-s">'title'</span><span class="pl-kos">,</span> <span class="pl-s">'set'</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">mockImplementation</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span><span class="pl-kos">}</span><span class="pl-kos">)</span>

Старая версия:
1
2
3
4
5
6
7
<span class="pl-k">const</span> <span class="pl-s1">getTitle</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-s">'пицца'</span><span class="pl-kos">)</span>
<span class="pl-k">const</span> <span class="pl-s1">setTitle</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-k">const</span> <span class="pl-s1">location</span> <span class="pl-c1">=</span> <span class="pl-kos">{</span><span class="pl-kos">}</span>
<span class="pl-v">Object</span><span class="pl-kos">.</span><span class="pl-en">defineProperty</span><span class="pl-kos">(</span><span class="pl-s1">location</span><span class="pl-kos">,</span> <span class="pl-s">'title'</span><span class="pl-kos">,</span> <span class="pl-kos">{</span>
<span class="pl-c1">get</span>: <span class="pl-s1">getTitle</span><span class="pl-kos">,</span>
<span class="pl-c1">set</span>: <span class="pl-s1">setTitle</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Очистка и восстановление фикций​

Для одной фикции:
1
2
3
<span class="pl-s1">fn</span><span class="pl-kos">.</span><span class="pl-en">mockClear</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// Удаляет дату использования фикции (fn.mock.calls, fn.mock.instances)</span>
<span class="pl-s1">fn</span><span class="pl-kos">.</span><span class="pl-en">mockReset</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// Удаляет любые возвращенные значения или реализации фикции</span>
<span class="pl-s1">fn</span><span class="pl-kos">.</span><span class="pl-en">mockRestore</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c">// Сбрасывает и восстанавливает первоначальную реализацию</span>
Обратите внимание: mockRestore() работает только применительно к фикциям, созданным с помощью jest.spyOn().

Для всех фикций:
1
2
3
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">clearAllMocks</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">resetAllMocks</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">restoreAllMocks</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

Получение доступа к исходному модулю при использовании «моков»​

1
2
3
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">mock</span><span class="pl-kos">(</span><span class="pl-s">'fs'</span><span class="pl-kos">)</span>
<span class="pl-k">const</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s">'fs'</span><span class="pl-kos">)</span> <span class="pl-c">// Модуль с "моком"</span>
<span class="pl-k">const</span> <span class="pl-s1">fs</span> <span class="pl-c1">=</span> <
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Фиктивные таймеры​

Позволяет писать синхронные тесты для кода, в котором используются нативные таймеры (setTimeout, setInterval, clearTimeout, clearInterval).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<span class="pl-c">// Разрешаем использование фиктивных таймеров</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">useFakeTimers</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Убить время'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

<span class="pl-c">// Запускаем код, в котором используются `setTimeout()` или `setInterval()`</span>
<span class="pl-k">const</span> <span class="pl-s1">actual</span> <span class="pl-c1">=</span> <span class="pl-en">someFunctionThatUseTimers</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span>

<span class="pl-c">// Перематываем до выполнения всех таймеров</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">runAllTimers</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

<span class="pl-c">// Синхронно проверяем результаты</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenCalledTimes</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Или настраиваем таймеры по времени с помощью Для просмотра ссылки Войди или Зарегистрируйся:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<span class="pl-c">// Разрешаем использование фиктивных таймеров</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">useFakeTimers</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'Убить время'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-k">const</span> <span class="pl-s1">callback</span> <span class="pl-c1">=</span> <span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">fn</span><span class="pl-kos">(</span><span class="pl-kos">)</span>

<span class="pl-c">// Запускаем код, в котором используются `setTimeout()` или `setInterval()`</span>
<span class="pl-k">const</span> <span class="pl-s1">actual</span> <span class="pl-c1">=</span> <span class="pl-en">someFunctionThatUseTimers</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span>

<span class="pl-c">// Перематываем на 250 мс</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">advanceTimersByTime</span><span class="pl-kos">(</span><span class="pl-c1">250</span><span class="pl-kos">)</span>

<span class="pl-c">// Синхронно проверяем результаты</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">callback</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toHaveBeenCalledTimes</span><span class="pl-kos">(</span><span class="pl-c1">1</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
В особых случаях используется Для просмотра ссылки Войди или Зарегистрируйся.

Обратите внимание: jest.useFakeTimers() следует вызывать только для использования других методов фиктивных таймеров.
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Тестирование, основанное на данных​

Запускаем одни и те же тесты с разными данными:
1
2
3
<span class="pl-s1">test</span><span class="pl-kos">.</span><span class="pl-en">each</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-c1">3</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">3</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-c1">2</span><span class="pl-kos">,</span> <span class="pl-c1">1</span><span class="pl-kos">,</span> <span class="pl-c1">3</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-s">'.add(%s, %s)'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">a</span><span class="pl-kos">,</span> <span class="pl-s1">b</span><span class="pl-kos">,</span> <span class="pl-s1">expected</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">a</span> <span class="pl-c1">+</span> <span class="pl-s1">b</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s1">expected</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Или с помощью шаблонных литералов:
1
2
3
4
5
6
7
8
<span class="pl-s1">test</span><span class="pl-kos">.</span><span class="pl-en">each</span><span class="pl-s">`</span>
<span class="pl-s"> a | b | expected</span>
<span class="pl-s"><span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">3</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">2</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">1</span><span class="pl-kos">}</span></span></span>
<span class="pl-s"><span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">1</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">2</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">3</span><span class="pl-kos">}</span></span></span>
<span class="pl-s"><span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">2</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">1</span><span class="pl-kos">}</span></span> | <span class="pl-s1"><span class="pl-kos">${</span><span class="pl-c1">3</span><span class="pl-kos">}</span></span></span>
<span class="pl-s">`</span><span class="pl-kos">(</span><span class="pl-s">'Возвращает $expected при сложении $a и $b'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">{</span> <span class="pl-s1">a</span><span class="pl-kos">,</span> <span class="pl-s1">b</span><span class="pl-kos">,</span> <span class="pl-s1">expected</span> <span class="pl-kos">}</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">a</span> <span class="pl-c1">+</span> <span class="pl-s1">b</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toBe</span><span class="pl-kos">(</span><span class="pl-s1">expected</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

Или на уровне describe:
1
2
3
4
5
<span class="pl-s1">describe</span><span class="pl-kos">.</span><span class="pl-en">each</span><span class="pl-kos">(</span><span class="pl-kos">[</span><span class="pl-kos">[</span><span class="pl-s">'mobile'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-s">'tablet'</span><span class="pl-kos">]</span><span class="pl-kos">,</span> <span class="pl-kos">[</span><span class="pl-s">'desktop'</span><span class="pl-kos">]</span><span class="pl-kos">]</span><span class="pl-kos">)</span><span class="pl-kos">(</span><span class="pl-s">'проверка выполнения за %s'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-s1">viewport</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'отображение загруженной страницы'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">//</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>
Для просмотра ссылки Войди или Зарегистрируйся, Для просмотра ссылки Войди или Зарегистрируйся
 

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,741
Реакции
1,448
Credits
25,126

Пропуск тестов. Шпаргалка по Jest.​

Не запускать указанные тесты:
1
2
<span class="pl-s1">describe</span><span class="pl-kos">.</span><span class="pl-c1">skip</span><span class="pl-kos">(</span><span class="pl-s">'makePoniesPink'</span><span class="pl-kos">.</span><span class="pl-kos">.</span><span class="pl-kos">.</span>
<span class="pl-c1">tests</span><span class="pl-kos">.</span><span class="pl-c1">skip</span><span class="pl-kos">(</span><span class="pl-s">'сделать каждого пони розовым'</span><span class="pl-kos">.</span><span class="pl-kos">.</span><span class="pl-kos">.</span>

Запускать только указанные тесты:
1
2
<span class="pl-s1">describe</span><span class="pl-kos">.</span><span class="pl-c1">only</span><span class="pl-kos">(</span><span class="pl-s">'makePoniesPink'</span><span class="pl-kos">.</span><span class="pl-kos">.</span><span class="pl-kos">.</span>
<span class="pl-c1">tests</span><span class="pl-kos">.</span><span class="pl-c1">only</span><span class="pl-kos">(</span><span class="pl-s">'сделать каждого пони розовым'</span><span class="pl-kos">.</span><span class="pl-kos">.</span><span class="pl-kos">.</span>

Тестирование модулей с побочными эффектами​

Node.js и Jest will кэшируют запрашиваемые (require) модули. Для тестирования модулей с побочными эффектами необходимо очищать реестр модулей между тестами:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<span class="pl-k">const</span> <span class="pl-s1">modulePath</span> <span class="pl-c1">=</span> <span class="pl-s">'../module-to-test'</span>

<span class="pl-en">afterEach</span><span class="pl-kos">(</span><span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-s1">jest</span><span class="pl-kos">.</span><span class="pl-en">resetModules</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'первый тест'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">// Подготовка условия для первого теста</span>
<span class="pl-k">const</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s1">modulePath</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-s1">result</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toMatchSnapshot</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>

<span class="pl-en">test</span><span class="pl-kos">(</span><span class="pl-s">'второй тест'</span><span class="pl-kos">,</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-kos">{</span>
<span class="pl-c">// Подготовка условия для первого теста</span>
<span class="pl-k">const</span> <span class="pl-en">fn</span> <span class="pl-c1">=</span> <span class="pl-kos">(</span><span class="pl-kos">)</span> <span class="pl-c1">=&gt;</span> <span class="pl-en">require</span><span class="pl-kos">(</span><span class="pl-s1">modulePath</span><span class="pl-kos">)</span>
<span class="pl-en">expect</span><span class="pl-kos">(</span><span class="pl-en">fn</span><span class="pl-kos">)</span><span class="pl-kos">.</span><span class="pl-en">toThrow</span><span class="pl-kos">(</span><span class="pl-kos">)</span>
<span class="pl-kos">}</span><span class="pl-kos">)</span>