【发布时间】:2018-11-29 19:28:30
【问题描述】:
我有一个标准的反应组件,其中包含我正在调用或想要检查它们是否已被调用的外部函数
我知道我可以为类函数做wrapper.instance().funcName(),但我说我已经导入了一个外部函数,无论是作为道具还是直接导入,我该怎么做?
基本上我该怎么做下面的???
class component extends React.Component{
localMethod = () => {
externalMethod()
}
}
expect(externalMethod).toHaveBeenCalled()
【问题讨论】:
-
“我有一个带有外部函数的标准反应组件,我正在调用或想要检查它们是否已被调用”谈到单元测试。您真的不想在测试中调用外部函数,因为您正在测试组件而不是函数。此外,您不想检查组件是否调用了它私下导入的某些外部函数,因为它是实现细节而不是要在单元测试中测试的组件 API 的一部分。
-
但是如果你需要检查这个实现细节,你可以按照answer
-
@YuryTarabanko 所以这种事情还没有真正完成?甚至没有来自 redux 的道具?不知道我该如何测试我的东西
-
"甚至没有来自 redux 的道具?"如果你传递一个回调属性,你总是可以传递一个存根(google for
sinon)并检查它是否被实际调用。 -
“所以这种事情还没有真正完成?”它可以完成(检查我上面链接的答案)。但是你导入的仪器工作量有点烦人。那些依赖于实现细节的测试也很容易被打破。
标签: reactjs unit-testing enzyme