Вопросы по тегу: jestjs

(34)

Как издеваться над функциями в том же модуле с помощью Jest?

Как лучше всего правильно сымитировать следующий пример?Проблема в том, что после времени импорта foo сохраняет ссылку на исходный незашифрованный bar.module.js:export function bar () { return 'bar'; } export function foo () { return `I am foo. bar is ${bar()}`; } module.test.js:import * as module from '../src/module'; describe('module', () => { let barSpy; beforeEach(() => { barSpy = jest.spyOn( module, 'bar' ).mockImplementation(jest.fn()); }); afterEach(() => { barSpy.mockRestore(); }); it('foo', () => { console.log(jest.isMockFunction(module.bar)); // outputs true module.bar.mockReturnValue('fake bar'); console.log(module.bar()); // outputs 'fake bar'; expect(module.foo()).toEqual('I am foo. bar is fake bar'); /** * does not work! we get the following: * * Expected value to equal: * "I am foo. bar is fake bar" * Received: * "I am foo. bar is bar" */ }); }); Можно изменить:export function foo () { return `I am foo. bar is ${bar()}`; } до:export function foo () { return `I am foo. bar is ${exports.bar()}`; } но, на мой взгляд, это довольно некрасиво делать везде.
M

Mark

5 лет назад

Ответов: 9

Есть ли возможность показать все описания тестов, когда я запускаю шуточные тесты?

Я использую шутку и фермент в своем проекте create-react-app. Когда я запускаю npm test, я получаю вывод, который показывает имена пройденных тестовых файлов, но я хотел бы, чтобы вывод также включал имена тестов.Пример: Кнопка.test.jsit ('renders button', () => { const button = shallow(); expect(toJson(button)).toMatchSnapshot(); }); Прямо сейчас, когда я запускаю тест npm, результат просто: PASS src/Button.test.js" и количество пройденных и не пройденных тестов (если тесты прошли успешно). Я хотел бы, чтобы вывод включал «кнопку рендеринга» и любые другие описания теста (например, как выглядит вывод при запуске теста rspec).
S

Sendai

4 года назад

Ответов: 5

как изменить возвращаемое значение функции jest mock в каждом тесте?

У меня есть подобный фиктивный модуль в тестовом файле компонента jest.mock('../../../magic/index', () => ({ navigationEnabled: () => true, guidanceEnabled: () => true })); эти функции будут вызываться в функции рендеринга моего компонента, чтобы скрыть и показать некоторые особенности.Я хочу сделать снимок различных комбинаций возвращаемого значения этих фиктивных функций.предположим, что у меня есть такой тестовый пример it('RowListItem should not render navigation and guidance options', () => { const wrapper = shallow( ); expect(enzymeToJson(wrapper)).toMatchSnapshot(); }); для запуска этого тестового примера я хочу изменить возвращаемые значения функций макетного модуля на false, как это динамическиjest.mock('../../../magic/index', () => ({ navigationEnabled: () => false, guidanceEnabled: () => false })); потому что я импортирую компонент RowListItem уже один раз, поэтому мой фиктивный модуль больше не импортируется. так что не изменится. как я могу это решить?
p

pashaplus

4 года назад

Ответов: 3

Свободное совпадение одного значения в jest.toHaveBeenCalledWith

У меня есть средство отслеживания аналитики, которое вызывается только через 1 секунду и с объектом, где значение intervalInMilliseconds (продолжительность) равно не детерминированному.Как я могу использовать jest.toHaveBeenCalledWith для проверки объекта? test('pageStats - pageState (будет ждать 1000 мс)', done => { константная дорожка = jest.fn() const ожидаемый = новый PayloadTiming({ категория: 'Страница публикации', действие: 'Страница публикации', имя: 'н/д', метка: «7», intervalInMilliseconds: 1000 // или около того }) mockInstance.viewState.layoutMode = PSPDFKit.LayoutMode.SINGLE const sendPageStats = pageStats({ экземпляр: mockInstance, отслеживать, удаленный идентификатор: nappConfig.remoteId }) mockInstance.addEventListener('viewState.currentPageIndex.change', sendPageStats) setTimeout(() => { mockInstance.fire('viewState.currentPageIndex.change', 2) ожидать(отслеживать).toHaveBeenCalled() ожидать(трек).toHaveBeenCalledWith(ожидаемый) Выполнено() }, 1000) ожидать(отслеживать).not.toHaveBeenCalled() }) ожидание(трек).toHaveBeenCalledWith(ожидаемый) завершается с ошибкой:Expected mock function to have been called with: {"action": "PublicationPage", "category": "PublicationPage", "intervalInMilliseconds": 1000, "label": "7", "name": "n/a"} as argument 1, but it was called with {"action": "PublicationPage", "category": "PublicationPage", "intervalInMilliseconds": 1001, "label": "7", "name": "n/a"} Я просмотрел расширенная шутка но я не вижу ничего полезного для моего варианта использования.
d

dotnetCarpenter

3 года назад

Ответов: 4

Jest - Простые тесты медленные

Я использую Jest для тестирования углового приложения, и выполнение простых тестов занимает очень много времени, и я не могу понять, почему.Моя настройка Jest в package.json:"jest": { "modulePaths": [ "/src", "/node_modules" ], "testPathIgnorePatterns": [ ".git/.*", "node_modules/.*" ], "transformIgnorePatterns": [ "node_modules/.*", ".*\\.js" ], "setupTestFrameworkScriptFile": "/src/setupJest.js", "preset": "jest-preset-angular", "testEnvironment": "jsdom", "testRegex": "src/app/.*\\.spec\\.ts$", "moduleFileExtensions": [ "ts", "js", "json" ], "verbose": true, "cacheDirectory": ".jest-cache", "coveragePathIgnorePatterns": [ ".*\\.(shim\\.ngstyle|ngfactory)\\.ts" ], "globals": { "ts-jest": { "tsConfigFile": "./tsconfig.json" }, "__TRANSFORM_HTML__": true } } Файл установки My Jest: 'use strict'; require('core-js/es6/reflect'); require('core-js/es7/reflect'); require('zone.js'); require('zone.js/dist/proxy.js'); require('zone.js/dist/sync-test'); require('zone.js/dist/async-test'); require('zone.js/dist/fake-async-test'); require('jest-zone-patch'); const getTestBed = require('@angular/core/testing').getTestBed; const BrowserDynamicTestingModule = require('@angular/platform-browser-dynamic/testing').BrowserDynamicTestingModule; const platformBrowserDynamicTesting = require('@angular/platform-browser-dynamic/testing') .platformBrowserDynamicTesting; getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting() ); Вот мой простой тест:fdescribe('RichTextEditorComponent', () => { it('should be fast', () => { expect(true).toBeTruthy(); }); }); Кто-нибудь знает, почему это занимает более 9 секунд?
T

Tucker

5 лет назад

Ответов: 6

Поддерживает ли Jest импорт/экспорт ES6?

Если я использую импорт/экспорт из ES6, то все мои тесты Jest завершатся с ошибкой: Неожиданное зарезервированное слово Я конвертирую тестируемый объект в старый синтаксис IIFE, и вдруг мои тесты проходят успешно. Или возьмем еще более простой тест: var Validation = require('../src/components/validation/validation'); // PASS //import * as Validation from '../src/components/validation/validation' // FAIL Та же ошибка. Очевидно, здесь проблема с импортом/экспортом. Мне нецелесообразно переписывать свой код с использованием синтаксиса ES5 только для того, чтобы сделать мою тестовую среду счастливой.У меня есть вавилонская шутка. Я пробовал различные предложения из проблем GitHub. Это еще не все.Файл package.json "scripts": { "start": "webpack-dev-server", "test": "jest" }, "jest": { "testPathDirs": [ "__tests__" ], "testPathIgnorePatterns": [ "/node_modules/" ], "testFileExtensions": ["es6", "js"], "moduleFileExtensions": ["js", "json", "es6"] }, Файл babelrc{ "presets": ["es2015", "react"], "plugins": ["transform-decorators-legacy"] } Есть ли это решение?
P

P.Brian.Mackey

6 лет назад

Ответов: 8

Запуск CRA Jest в неинтерактивном режиме

Обновление: в основном я использую тесты в CI, но обычно меня интересует переопределение параметров CRA Jest по умолчанию.Я запускаю тесты, используя Jest, конфигурацию, поставляемую с Create React App. Всегда запускается в интерактивном режиме: › Press a to run all tests. › Press o to only run tests related to changed files. › Press p to filter by a filename regex pattern. › Press q to quit watch mode. › Press Enter to trigger a test run. Но я не хочу, чтобы он ждал моего ввода. Я хочу, чтобы он запускался один раз, а затем завершался. Я пытался использовать переключатели --bail или --no-watchman, но он по-прежнему запускается в интерактивном режиме.Если я глобально устанавливаю jestи запускаю его в корне моего проекта, он выполняется один раз и завершается (как я хочу). Но когда я запускаю npm test, который запускает react-scripts test, он переходит в режим наблюдения, даже если я не прохожу --watch.*100010 *Обновление: я также зарегистрировал проблему на CRA.
A

AlexStack

5 лет назад

Ответов: 3

SyntaxError с Jest и React и импорт файлов CSS

Я пытаюсь пройти свой первый Jest Test с помощью React и Babel.Я получаю следующую ошибку: SyntaxError: /Users/manueldupont/test/avid-sibelius-publishing-viewer/src/components/TransportButton/TransportButton.less: Неожиданный токен > 7 | @import '../variables.css'; | ^ Моя конфигурация package.json для шутки выглядит так: "babel": { "presets": [ "es2015", "react" ], "plugins": [ "syntax-class-properties", "transform-class-properties" ] }, "jest": { "moduleNameMapper": { "^image![a-zA-Z0-9$_-]+$": "GlobalImageStub", "^[./a-zA-Z0-9$_-]+\\.png$": "RelativeImageStub" }, "testPathIgnorePatterns": [ "/node_modules/" ], "collectCoverage": true, "verbose": true, "modulePathIgnorePatterns": [ "rpmbuild" ], "unmockedModulePathPatterns": [ "/node_modules/react/", "/node_modules/react-dom/", "/node_modules/react-addons-test-utils/", "/node_modules/fbjs", "/node_modules/core-js" ] }, Так чего же мне не хватает?
M

Mano Dupont

5 лет назад

Ответов: 8

Как издеваться над экспортируемой константой в шутку

У меня есть файл, который зависит от экспортированной переменной const. Эта переменная имеет значение true, но при необходимости ее можно установить на false вручную, чтобы предотвратить какое-либо поведение, если нижестоящие службы запрашивают ее.Я не знаю, как смоделировать переменную const в Jest, чтобы изменить ее значение для проверки условий true и false.*100008 *Пример://constants module export const ENABLED = true; //allowThrough module import { ENABLED } from './constants'; export function allowThrough(data) { return (data && ENABLED === true) } // jest test import { allowThrough } from './allowThrough'; import { ENABLED } from './constants'; describe('allowThrough', () => { test('success', () => { expect(ENABLED).toBE(true); expect(allowThrough({value: 1})).toBe(true); }); test('fail, ENABLED === false', () => { //how do I override the value of ENABLED here? expect(ENABLED).toBe(false) // won't work because enabled is a const expect(allowThrough({value: 1})).toBe(true); //fails because ENABLED is still true }); });
M

Mdd

5 лет назад

Ответов: 11

How to check multiple arguments on multiple calls for jest spies?

I have the following function in a React component: onUploadStart(file, xhr, formData) { formData.append('filename', file.name); formData.append('mimeType', file.type); } This is my test that at least gets the spy to be called: const formData = { append: jest.fn() }; const file = { name: 'someFileName', type: 'someMimeType' }; eventHandlers.onUploadStart(file, null, formData); expect(formData.append).toHaveBeenCalledWith( ['mimeType', 'someMimeType'], ['fileName', 'someFileName'] ); However, the assertion is not working: Expected mock function to have been called with: [["mimeType", "someMimeType"], ["fileName", "someFileName"]] But it was called with: ["mimeType", "someMimeType"], ["filename", "someFileName"] What is the right way to use toHaveBeenCalledWith?
A

Andreas Köberle

5 лет назад

Ответов: 9

Как сбросить счетчик вызовов фиктивных функций Jest перед каждым тестом

Я новичок в Jest, я пытаюсь использовать его для проверки, была ли вызвана функция или нет. Я заметил, что mock.calls.length не сбрасывается для каждого теста, а накапливается. Как мне сделать 0 перед каждым тестом? Я не хочу, чтобы мои следующие тесты зависели от результатов предыдущего.Я знаю, что в Jest есть beforeEach - стоит ли мне его использовать? Как лучше всего сбросить mock.calls.length? Спасибо.Пример кода:Sum.js:import local from 'api/local'; export default { addNumbers(a, b) { if (a + b Sum.test.jsimport sum from 'api/sum'; import local from 'api/local'; jest.mock('api/local'); // For current implementation, there is a difference // if I put test 1 before test 2. I want it to be no difference // test 1 test('should not to call local if sum is more than 10', () => { expect(sum.addNumbers(5, 10)).toBe(15); expect(local.getData.mock.calls.length).toBe(0); }); // test 2 test('should call local if sum { expect(sum.addNumbers(1, 4)).toBe(5); expect(local.getData.mock.calls.length).toBe(1); });
A

Alex Efremov

4 года назад

Ответов: 4

Операторы Console.log вообще ничего не выводят в Jest

Операторыconsole.log вообще ничего не выводят в Jest. Это работало для меня вчера, и внезапно не работает сегодня. Я не внес никаких изменений в свою конфигурацию и не установил никаких обновлений.Я не использую опцию - forceExit. Проблема все еще наблюдается.
H

Hina Dawood

4 года назад

Ответов: 13

Запустите только ОДИН тест с Jest

Я хочу запустить только один тест с Jest.Я использую it.only или describe.only, но он по-прежнему выполняет множество тестов. Я думаю, что он запускает все тесты с момента моей последней фиксации, но у него не должно быть такого поведения с явно установленным флагом only, верно?Что вызывает такое поведение и как запустить одиночный тест?
j

jpenna

5 лет назад

Ответов: 5

Как проверить аксиомы в Jest?

У меня в React есть такое действие:export function fetchPosts() { const request = axios.get(`${WORDPRESS_URL}`); return { type: FETCH_POSTS, payload: request } } Как в этом случае проверить Axios?У Jest есть этот вариант использования на своем сайте для асинхронного кода, где они используют фиктивную функцию, но могу ли я сделать это с помощью Axios?Ссылка: Пример асинхронного режимаЯ сделал это до сих пор, чтобы проверить, возвращает ли он правильный тип:it('should dispatch actions with the correct type', () => { store.dispatch(fetchPosts()); let action = store.getActions(); expect(action[0].type).toBe(FETCH_POSTS); }); Как я могу передать фиктивные данные и проверить, что они возвращаются?
A

Adear

5 лет назад

Ответов: 6

Не удается найти имя "описать". Вам нужно установить определения типов для средства выполнения тестов?

При использовании TypeScript вместе с Jest мои спецификации не работали бы с такими сообщениями об ошибках, как:test/unit/some.spec.ts:1:1 - error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`. test/unit/some.spec.ts:2:3 - error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`. test/unit/some.spec.ts:3:7 - error TS2304: Cannot find name 'expect'. test/unit/some.spec.ts:7:1 - error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`. Типы уже установлены.Я использую: "@types/jest": "^23.3.12", "jest": "^23.6.0", "ts-jest": "^23.10.5", "typescript": "^3.1.6" Я запускаю тесты, используя jest --forceExit --coverage --verbose
R

Ronin

3 года назад

Ответов: 26

Как я могу получить аргументы, вызываемые в функции имитации шутки?

Как я могу получить аргументы, вызываемые в шутливой фиктивной функции?Я хочу проверить объект, переданный в качестве аргумента.
B

Bruno Quaresma

5 лет назад

Ответов: 4

Есть ли функция сопоставления равенства массивов, которая игнорирует позицию элемента в jest.js?

Получаю, что .toEqual () проверяет равенство всех полей для простых объектов:ожидать ( {"key1": "розовая шерсть", "key2": "диорит"} ).равному( {"key2": "диорит", "key1": "розовая шерсть"} ); Так проходит.Но это не так для массивов:expect ([«розовая шерсть», «диорит»]). ToEqual ([«диорит», «розовая шерсть»]); Кажется, нет функции сопоставления, которая делает это в шутливых документах, то есть проверяет равенство двух массивов независимо от положения их элементов. Должен ли я тестировать каждый элемент в одном массиве против всех элементов в другом и наоборот? Или есть другой способ?
B

Benjamin H Boruff

5 лет назад

Ответов: 10

Пропустить один тест в тестовом файле Jest

Я использую Jest framework и имею набор тестов. Я хочу выключить / пропустить один из моих тестов.Поиск в документации не дает мне ответов.Вы знаете ответ или источник информации для проверки?
G

Gleichmut

4 года назад

Ответов: 3

Шутка: как имитировать консоль, когда она используется сторонней библиотекой?

Я пытаюсь имитировать console.warn / error, но не могу. Я использую стороннюю библиотеку, которая вызывает внутри нее console.warn. Мне нужно проверить, называлось оно или нет. В моем тестовом примере я пытался заглушить console.warn, но это не помогло. После этого я пытался вручную имитировать консоль, у меня тоже не вышло.console.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); expect(console.warn).toBeCalled(); не получилосьconsole.warn = jest.fn(); testSchema('/app/components/Users/UserItem/UserItemContainer.js'); console.warn('error'); expect(console.warn).toBeCalled(); действительно сработало. Но я все еще вижу console.warn node_modules / babel-relay-plugin / lib / getBabelRelayPlugin.js: 138 в терминале. Кто-нибудь может мне помочь?
E

Errorpro

5 лет назад

Ответов: 2

В чем разница между toBe и toEqual в Jest?

Документация Jest гласит: toBe просто проверяет, соответствует ли значение ожидаемому. Он использует === для проверки строгого равенства. И для toEqual: Используйте .toEqual, если вы хотите проверить, что два объекта имеют одинаковое значение. Этот сопоставитель рекурсивно проверяет равенство всех полей, а не проверяет идентичность объекта - это также известно как «глубокое равенство». Например, toEqual и toBe по-разному ведут себя в этом наборе тестов, поэтому все тесты проходят. const x = {a: {b: 3}}; const y = {a: {b: 3}}; ожидать (x) .toEqual (y); ожидать (x) .toBe (y); В этом случае toEqual проходит, но toBe не работает. Я понимаю, что toEqual проходит, потому что он выполняет проверку deep equal. Почему в этом случае не работает toBe?Кроме того, есть ли лучшие практики для использования toBe и toEqual (не только в Jest, но и в других средах тестирования)?
s

sshh

5 лет назад

Ответов: 4

Как изменить реализацию макета для каждого отдельного теста [Jestjs]

Я бы хотел изменить реализацию фиктивной зависимости на основе единого теста на , расширив поведение макета по умолчаниюи возврат его обратно к исходной реализации при выполнении следующего теста.Короче то, чего я пытаюсь достичь: макет зависимость изменить / расширить реализацию макета в одном тесте вернуть к исходному макету при выполнении следующего теста Сейчас я использую Jest v21.Вот как будет выглядеть типичный Jest-тест:__ mocks __ / myModule.jsconst myMockedModule = jest.genMockFromModule('../myModule'); myMockedModule.a = jest.fn(() => true); myMockedModule.b = jest.fn(() => true); export default myMockedModule; __ тесты __ / myTest.jsimport myMockedModule from '../myModule'; // Mock myModule jest.mock('../myModule'); beforeEach(() => { jest.clearAllMocks(); }); describe('MyTest', () => { it('should test with default mock', () => { myMockedModule.a(); // === true myMockedModule.b(); // === true }); it('should override myMockedModule.b mock result (and leave the other methods untouched)', () => { // Extend change mock myMockedModule.a(); // === true myMockedModule.b(); // === 'overridden' // Restore mock to original implementation with no side effects }); it('should revert back to default myMockedModule mock', () => { myMockedModule.a(); // === true myMockedModule.b(); // === true }); }); Вот что я пробовал до сих пор:1 - mockFn.mockImplementationOnce (fn)плюсы Возврат к исходной реализации после первого вызова расход Он ломается, если тест вызывает b несколько раз Он не возвращается к исходной реализации, пока b не будет вызван (утечка в следующем тесте) код:it('should override myModule.b mock result (and leave the other methods untouched)', () => { myMockedModule.b.mockImplementationOnce(() => 'overridden'); myModule.a(); // === true myModule.b(); // === 'overridden' }); 2 - jest.doMock (имя модуля, завод, параметры)плюсы Явно перепроверяет при каждом тесте расход Невозможно определить реализацию макета по умолчанию для всех тестов Невозможно расширить реализацию по умолчанию, заставляя повторно объявлять каждое издевательство метод код:it('should override myModule.b mock result (and leave the other methods untouched)', () => { jest.doMock('../myModule', () => { return { a: jest.fn(() => true, b: jest.fn(() => 'overridden', } }); myModule.a(); // === true myModule.b(); // === 'overridden' }); 3 - Ручной имитатор с помощью методов установки (как объяснено здесь)плюсы Полный контроль над фиктивными результатами расход Лот шаблонного кода Трудно обслуживать в течение длительного времени код:__ mocks __ / myModule.jsconst myMockedModule = jest.genMockFromModule('../myModule'); let a = true; let b = true; myMockedModule.a = jest.fn(() => a); myMockedModule.b = jest.fn(() => b); myMockedModule.__setA = (value) => { a = value }; myMockedModule.__setB = (value) => { b = value }; myMockedModule.__reset = () => { a = true; b = true; }; export default myMockedModule; __ тесты __ / myTest.jsit('should override myModule.b mock result (and leave the other methods untouched)', () => { myModule.__setB('overridden'); myModule.a(); // === true myModule.b(); // === 'overridden' myModule.__reset(); }); 4 - jest.spyOn (объект, имя метода)расход Я не могу вернуть mockImplementation к исходному фиктивному возвращаемому значению, что влияет на следующие тесты код:beforeEach(() => { jest.clearAllMocks(); jest.restoreAllMocks(); }); // Mock myModule jest.mock('../myModule'); it('should override myModule.b mock result (and leave the other methods untouched)', () => { const spy = jest.spyOn(myMockedModule, 'b').mockImplementation(() => 'overridden'); myMockedModule.a(); // === true myMockedModule.b(); // === 'overridden' // How to get back to original mocked value? });
A

Andrea Carraro

4 года назад

Ответов: 4

Jest: лучший способ отключить консоль внутри модульных тестов

Интересно, есть ли лучший способ отключить ошибки консоли внутри a специальный тест Jest (т.е. восстановить исходную консоль до / после каждого теста).Вот мой текущий подход:describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses console error expect(someFunction).toBe("X"); expect(consoleSpy).toHaveBeenCalled(); }); test("Test that has console available", () => { // shows up during jest watch test, just as intended console.error("test"); }); }); Есть ли более чистый способ сделать то же самое?Я бы хотел избежать spyOn, но mockRestore, похоже, работает только с ним.Спасибо!
A

Apidcloud

5 лет назад

Ответов: 10

Шутка: как проверить ключи и значения объекта?

У меня есть mapModule, куда я импортирую компоненты и экспортирую их:import ComponentName from '../components/ComponentName'; export default { name: ComponentName, }; Как я могу проверить, что mapModule имеет правильные экспортированные ключи, значения и не являются ли они нулевыми или неопределенными?
f

fasenberg

4 года назад

Ответов: 6

Можете ли вы написать асинхронные тесты, ожидающие Throw?

Я пишу асинхронный тест, который ожидает, что асинхронная функция выдаст следующее:it("expects to have failed", async () => { let getBadResults = async () => { await failingAsyncTest() } expect(await getBadResults()).toThrow() }) Но шутка просто не проходит вместо того, чтобы пройти тест: FAIL src/failing-test.spec.js ● expects to have failed Failed: I should fail! Если я перепишу тест так:expect(async () => { await failingAsyncTest() }).toThrow() Я получаю эту ошибку вместо успешного прохождения теста:expect(function).toThrow(undefined) Expected the function to throw an error. But it didn't throw anything.
S

Sean

4 года назад

Ответов: 5

Протестируйте process.env с помощью Jest

У меня есть приложение, которое зависит от переменных окружения, например:const APP_PORT = process.env.APP_PORT || 8080; И я бы хотел проверить это, например: APP_PORT может быть установлен переменной среды Node.js. или что приложение Express.js работает на порту, заданном с помощью process.env.APP_PORT Как я могу этого добиться с помощью Jest? Могу ли я установить эти переменные process.env перед каждым тестом, или мне нужно как-то поиздеваться над этим?
T

Tomasz Mularczyk

4 года назад

Ответов: 12

Как вы проверяете отсутствие элемента с помощью библиотеки jest и react-testing-library?

У меня есть библиотека компонентов, в которой я пишу модульные тесты для использования Jest и react-testing-library. Основываясь на определенных свойствах или событиях, я хочу убедиться, что определенные элементы не отображаются.getByText, getByTestIdи т. Д. Выдает ошибку в react-testing-library, если элемент не найден, что приводит к сбою теста до ожидайте функция срабатывает.Как вы тестируете что-то, чего не существует в шутке, с помощью библиотеки-тестирования-реакции?
S

SomethingOn

3 года назад

Ответов: 8

How can I mock the JavaScript window object using Jest?

I need to test a function which opens a new tab in the browseropenStatementsReport(contactIds) { window.open(`a_url_${contactIds}`); } I would like to mock the window's open function so I can verify the correct URL is passed in to the open function.Using Jest, I don't know how to mock the window. I tried to set window.open with a mock function but this way doesn't work. Below is the test caseit('correct url is called', () => { window.open = jest.fn(); statementService.openStatementsReport(111); expect(window.open).toBeCalled(); }); But it gives me the errorexpect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function anonymous] What should I do to the test case?
d

danny

5 лет назад

Ответов: 15

Как очистить кеш Jest?

Jest подбирает старую версию пакета, и поэтому мои тесты терпят неудачу, если я не использую - no-cache. Я даже могу удалить папку пакета из папки node_modules, и Jest с радостью запустит тесты (почти все проходят).Итак, как мне очистить кеш Jest?
M

Manuel

5 лет назад

Ответов: 4

Как имитировать импортированную именованную функцию в Jest, когда модуль разблокирован

У меня есть следующий модуль, который я пытаюсь протестировать в Jest:// myModule.js export function otherFn() { console.log('do something'); } export function testFn() { otherFn(); // do other things } Как показано выше, он экспортирует некоторые именованные функции и, что важно, testFn использует otherFn.В Jest, когда я пишу свой модульный тест для testFn, я хочу имитировать функцию otherFn, потому что мне не нужны ошибки в otherFnчтобы повлиять на мой модульный тест для testFn. Моя проблема в том, что я не уверен, как это лучше сделать:// myModule.test.js jest.unmock('myModule'); import { testFn, otherFn } from 'myModule'; describe('test category', () => { it('tests something about testFn', () => { // I want to mock "otherFn" here but can't reassign // a.k.a. can't do otherFn = jest.fn() }); }); Любая помощь / понимание приветствуется.
J

Jon Rubins

5 лет назад

Ответов: 8

Как запустить одиночный тест с помощью Jest?

У меня есть тест «работает с вложенными потомками» в файле fix-order-test.js.Выполнение нижеприведенного запускает все тесты в файле.jest fix-order-test Как запустить только один тест? Приведенный ниже код не работает, поскольку он ищет файл с указанным регулярным выражением.jest 'works with nested children'
v

vijayst

5 лет назад

Ответов: 19

2022 WebDevInsider