Модульные тесты завершаются с ошибкой «Превышен тайм-аут команды Cypress на 4000 мс». - PullRequest
0 голосов
/ 23 сентября 2019

Я использую библиотеку кипариса и реагирования для выполнения модульных тестов на моем компоненте.Тем не менее, я сталкиваюсь с приведенной ниже ошибкой, когда тест выполняет

«Превышен тайм-аут команды Cypress« 4000ms ». *

Я заметил, что реальный тест, который я написал, завершился успешно.Но есть ошибка в «конце-концов» хуке, который каким-то образом вставлен.У меня нет «в конце концов» хука в моей тестовой спецификации.Я хотел знать, откуда это может быть вызвано, поскольку у меня его нет в моем коде.

Дополнительная информация: я использую плагины webpack и istanbul, которые добавляются в файл plugins / index.js

test-spec.js

import React from 'react';
import {render, fireEvent, cleanup} from '@testing-library/react';
import Greeting from '../../src/utils/testUtils/components/Greeting';

describe('react-testing-library', () => {   

    it('renders View Details component', () => {      
            const component = render(<Greeting />);
            component.getByText('Hello');
        })
})

Мой компонент --reeting.js

import React from 'react';

export default function Greeting() {
    return (
        <div>{'Hello'}</div>
    );
}

cypress \ support \ index.js

import './commands';
import '@cypress/code-coverage/support';

cypress \plugins \ index.js


const webpack = require('@cypress/webpack-preprocessor')
const webpackOptions = {
  module: {
    rules: [
      {
        test: /\.(js|jsx|mjs)$/,
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env', '@babel/preset-react'],
          plugins: ['@babel/plugin-proposal-class-properties', 'istanbul'],
        },
      }
    ]
  }
}

const options = {
  // send in the options from your webpack.config.js, so it works the same
  // as your app's code
  webpackOptions,
  watchOptions: {}
}

module.exports = on => {
  on('file:preprocessor', webpack(options))
  on('task', require('@cypress/code-coverage/task'))

}

Ниже приведена ошибка, которую я получаю на консоли

react-testing-library
    √ renders View Details component (68ms)
    1) "after each" hook for "renders View Details component"


  1 passing (7s)
  1 failing

  1) react-testing-library "after each" hook for "renders View Details component":
     Error: Cypress command timeout of '4000ms' exceeded.

Because this error occurred during a 'after each' hook we are skipping all of the remaining tests.
      at http://localhost:4444/__cypress/runner/cypress_runner.js:82978:25

Из-за этого тесты не пройдены.Любые предложения относительно того, почему эта ошибка могла произойти, очень помогли бы.

Заранее спасибо!

1 Ответ

0 голосов
/ 24 сентября 2019

С некоторой помощью сообщества кипарисов кажется, что библиотека реагирующего тестирования добавляет после каждого хука для очистки.

https://github.com/testing-library/react-testing-library/blob/master/src/index.js

Это асинхронныйметод, который приводит к тому, что кипарис выдает предупреждение:

cypress_runner.js:85235 Cypress Warning: Cypress detected that you returned a promise in a test, but also invoked one or more cy commands inside of that promise.

Мне удалось предотвратить это добавление afterEach и заставить тесты работать.Мы можем использовать любой из методов, указанных здесь для достижения этой цели.

...