Javascript 测试React组件时,有没有直接调用其非生命周期方法的方法?

Javascript 测试React组件时,有没有直接调用其非生命周期方法的方法?,javascript,unit-testing,reactjs,react-jsx,jestjs,Javascript,Unit Testing,Reactjs,React Jsx,Jestjs,我在使用Jest,我有一些组件,比如: var TestClass = react.createClass({ foo: function() { return "test"; }, render: function() { return <div />; } }); 从这个问题的答案来看,我希望这个测试能够通过,但是: test.foo不是一个函数 我是否误解了这个答案 一般来说,我更希望能够以这种方式测试非生命周期方法——这将提供更好的粒度,但如

我在使用Jest,我有一些组件,比如:

var TestClass = react.createClass({
  foo: function() {
    return "test";
  },
  render: function() {
    return <div />;
  }
});
从这个问题的答案来看,我希望这个测试能够通过,但是:

test.foo不是一个函数

我是否误解了这个答案

一般来说,我更希望能够以这种方式测试非生命周期方法——这将提供更好的粒度,但如果这不可能,是否有合理的替代方案


例如,如果没有此功能,如何测试作为道具传递给组件子级的方法?

使用
renderIntoDocument

import ReactTestUtils from 'react-addons-test-utils';

...

const test = ReactTestUtils.renderIntoDocument(
  <TestClass />
);
expect(test.foo()).toBeTruthy();
从“react addons test utils”导入ReactTestUtils;
...
常量测试=reactestutils.renderIntoDocument(
);
expect(test.foo()).toBeTruthy();

如果您使用的是Ezyme而不是ReactTestUtils,并且您使用的是Ezyme的装载呈现程序,那么您可以调用ReactWrapper上的.instance()来检索ReactComponent

var test = mount(
  <TestClass />
);

expect(test.instance().foo()).toBeTruthy();
var测试=挂载(
);
expect(test.instance().foo()).toBeTruthy();

我猜测试中的变量
test
不是类的实例,而是呈现的组件(或
.renderIntoDocument
返回的任何组件)。这就是我拼凑堆栈溢出的人为示例得到的结果!将编辑
expect(TestClass.prototype.foo()).toBeTruthy()文档未定义。。。这只能在浏览器中使用:\正确-我们使用的是来自ReactTestUtils的renderIntoDocument:)
var test = mount(
  <TestClass />
);

expect(test.instance().foo()).toBeTruthy();