Sinon访问原始功能体

时间:2017-04-12 17:18:11

标签: javascript reactjs sinon enzyme sinon-chai

我正在使用sinon chai和酶测试React组件。 我正在编写一个具有HOC的插件,它将生成一个新的React组件。

我不确定用户将传递给HOC的内容,因此我想检查它是否是React Component。我能找到的唯一(丑陋)方式是适应这个StackOverflow Answer

export function isClassComponent(component) {
  return (
    typeof component === 'function' && !!component.prototype.isReactComponent
  )
}

export function isFunctionComponent(component) {
  return (
    typeof component === 'function' && String(component).includes('.createElement')
  );
}

export function isReactComponent(component) {
  return !!(isClassComponent(component) || isFunctionComponent(component))
}

这是一种模糊的方法来测试组件是否是React组件。

问题是当我的组件是一个sinon间谍。

const FnChild = (props) => (<div id="child-fn">{props.children}</div>);
const ChildSpy = spy(FnChild);

现在测试isReactComponent(ChildSpy)将失败,因为isFunctionComponent将实际检查函数的主体,并且在ChildSpy的情况下将不再是原始函数的主体。< / p>

我知道我不应该依赖身体功能,但这是我能找到的最佳方式。

无论如何,有没有办法从间谍访问原来的身体?在这种情况下,我怎么能将它传递给我的isFunctionComponent

0 个答案:

没有答案