0

我在状态机中使用了保护功能。

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

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

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

4

1 回答 1

0

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

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

expect(isDouble(
  { num: 5 },
  { data: { number: 2 }
)).toBeFalsy();
于 2021-02-26T14:18:30.963 回答