在哪里/如何进行单元测试和 xstate 保护功能?

问题描述

我在我的状态机中使用了一个保护函数

const isDouble = (context,event) => {
  return context.num*2 === event.data.number
}

我想对这个守卫进行单元测试(为了这个问题,我已经简化了它)以确保它始终按预期工作(可能有人会改变上下文结构,或者从服务器返回导致data.number 到事件等)。

在哪里/我该怎么做? xstate 是否有针对此的常规模式?或者我应该在我想要的地方进行完全独立的单元测试?

解决方法

守卫应该只是一个纯函数,所以你可以通过在参数中提供测试用例数据来测试它:

expect(isDouble(
  { num: 4 },{ data: { number: 2 }
)).toBeTruthy();

expect(isDouble(
  { num: 5 },{ data: { number: 2 }
)).toBeFalsy();