- 安装依赖:
- 确保项目中安装了
jest
和@testing - library/solid - js
。@testing - library/solid - js
用于测试Solid.js组件,jest
是测试框架。
- 可以通过
npm install --save - dev jest @testing - library/solid - js
安装。
- 编写计数器组件:
import { createSignal } from'solid - js';
const Counter = () => {
const [count, setCount] = createSignal(0);
const increment = () => setCount(count() + 1);
const decrement = () => setCount(count() - 1);
return (
<div>
<p>Count: {count()}</p>
<button onClick={increment}>Increment</button>
<button onClick={decrement}>Decrement</button>
</div>
);
};
export default Counter;
- 编写测试用例:
import { render, screen } from '@testing - library/solid - js';
import Counter from './Counter';
import { fireEvent } from '@testing - library/dom';
describe('Counter Component', () => {
test('renders counter with initial value 0', () => {
render(<Counter />);
const countElement = screen.getByText('Count: 0');
expect(countElement).toBeInTheDocument();
});
test('increments the count on click', () => {
render(<Counter />);
const incrementButton = screen.getByText('Increment');
fireEvent.click(incrementButton);
const countElement = screen.getByText('Count: 1');
expect(countElement).toBeInTheDocument();
});
test('decrements the count on click', () => {
render(<Counter />);
const decrementButton = screen.getByText('Decrement');
fireEvent.click(decrementButton);
const countElement = screen.getByText('Count: -1');
expect(countElement).toBeInTheDocument();
});
});
- 解释:
- 渲染组件:
- 使用
render(<Counter />)
渲染计数器组件。render
函数来自@testing - library/solid - js
,它会渲染Solid.js组件。
- 断言初始状态:
- 在第一个测试用例中,通过
screen.getByText('Count: 0')
获取显示计数的元素,并使用expect(countElement).toBeInTheDocument()
断言该元素在文档中,从而验证初始计数为0。
- 模拟状态变化:
- 在
increments the count on click
测试用例中,使用screen.getByText('Increment')
获取“Increment”按钮,然后通过fireEvent.click(incrementButton)
模拟点击按钮,触发increment
函数,从而改变计数状态。接着再次获取显示计数的元素,并断言计数已变为1。
decrements the count on click
测试用例类似,只是模拟点击“Decrement”按钮,断言计数变为 - 1。