Я пытаюсь разобраться в функциональном тестировании в React, и я наткнулся на блокиратор, с которым я sh мог бы пролить свет. В настоящее время у меня есть небольшое приложение-счетчик, в котором есть компонент кнопки, который получает функцию и строку в качестве реквизита. это выглядит так:
Кнопка. js
import React from 'react'
import PropTypes from 'prop-types'
export const Button = (props) => {
const { btnTitle, btnAction } = props
return (
<button onClick={btnAction}>{btnTitle}</button>
)
}
Button.propTypes = {
btnAction: PropTypes.func,
btnTitle: PropTypes.string
}
У меня также есть каталог помощников, который содержит мою функцию CounterHandler, которая получает число в качестве начального значения счетчика значение и может увеличивать или уменьшать указанное начальное значение. Код выглядит следующим образом:
CounterHandler. js
import React from 'react'
export const CounterHandler = num => {
const [counter, setCounter] = React.useState(num)
const increase = () => setCounter(counter + 1)
const decrease = () => setCounter(counter - 1)
return {
counter,
increase,
decrease
}
}
Теперь мое приложение. js, которое отображает кнопку и код действия выглядит следующим образом .
Приложение. js
import React from 'react'
import CounterHandler from './components/button/helpers'
import Button from './components/button'
function App () {
const counter = CounterHandler(0)
return (
<div className="App">
<Button btnTitle="click to increase" btnAction={counter.increase} />
<Button btnTitle="click to decrease" btnAction={counter.decrease} />
<h1>counter: {counter.counter}</h1>
</div>
)
}
export default App
Приложение работает по назначению. Счетчик будет увеличиваться или уменьшаться в зависимости от того, какая кнопка была нажата.
Сейчас я пытаюсь написать тест для моей функции CounterHandler. js, но, к сожалению, я продолжаю сталкиваться с ошибкой перехвата, которая не возникает при запуске приложения на моем локальном компьютере. server.
Пока что единственный тест, который я хотел попробовать, это получить начальное значение, найденное в моем счетчике, и продолжить оттуда. Мой тест выглядит так:
CounterHandler.test. js
import { CounterHandler } from './CounterHandler'
const counter = CounterHandler(0)
describe('Counter state', () => {
test('test initial state', () => {
expect(counter.counter).tobe(0)
})
})
и вывод, который я получаю:
Может кто-нибудь дать мне несколько советов? Я буду очень признателен.
для дальнейшего изучения моих конфигов, это мой экспериментальный аккаунт GitHub для этого проекта. https://github.com/melvinalmonte/testing-practice
Спасибо !!