问题描述
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();