测试
测试逻辑
测试 actor 逻辑对于确保逻辑正确性和预期行为非常重要。您可以使用各种测试库和工具来测试您的状态机和 actor。在为状态机和 actor 编写测试时,您应该遵循 安排、执行、断言 模式:
- 安排 - 通过创建 actor 逻辑(例如状态机)和从 actor 逻辑创建 actor 来设置测试。
- 执行 - 向 actor 发送事件。
- 断言 - 断言 actor 达到预期状态和/或执行预期的副作用。
import { setup, createActor } from 'xstate';
import { test, expect } from 'vitest';
test('some actor', async () => {
const notifiedMessages: string[] = [];
// 1. 安排
const machine = setup({
actions: {
notify: (_, params) => {
notifiedMessages.push(params.message);
}
}
}).createMachine({
initial: 'inactive',
states: {
inactive: {
on: { toggle: { target: 'active' } }
},
active: {
entry: { type: 'notify', params: { message: 'Active!' } },
on: { toggle: { target: 'inactive' } }
}
}
});
const actor = createActor(machine);
// 2. 执行
actor.start();
actor.send({ type: 'toggle' }); // => 应该处于 'active' 状态
actor.send({ type: 'toggle' }); // => 应该处于 'inactive' 状态
actor.send({ type: 'toggle' }); // => 应该处于 'active' 状态
// 3. 断言
expect(actor.getSnapshot().value).toBe('active');
expect(notifiedMessages).toEqual(['Active!', 'Active!']);
});
测试 actor
即将推出
模拟效果
即将推出
使用 @xstate/test
即将推出