我使用Jest,我有一些组件,如:
var TestClass = react.createClass({
foo: function() {
return "test";
},
render: function() {
return <div />;
}
});
我想专门针对TestClass
&#39;编写单元测试。 foo
方法。
我看到Call a React component method from outside建议这应该是可行的 - 只需在测试中渲染组件并调用它:
describe("TestClass", function() {
it("should access internal methods", function() {
var test = <TestClass />
expect(test.foo()).toBeTruthy()
}
});
从这个问题的答案我希望这个测试能够通过,而是:
test.foo不是函数
我误解了这个答案吗?
一般来说,我希望能够以这种方式测试非生命周期方法 - 它会提供更好的粒度,但如果不可能,那么是否有一个明智的替代方案?
例如,如何测试一个方法作为道具传递给没有这种能力的组件的孩子?
答案 0 :(得分:0)
使用renderIntoDocument
:
import ReactTestUtils from 'react-addons-test-utils';
...
const test = ReactTestUtils.renderIntoDocument(
<TestClass />
);
expect(test.foo()).toBeTruthy();
答案 1 :(得分:0)
如果你使用的是酶而不是ReactTestUtils,并且你正在使用酶的mount渲染器,那么你可以在ReactWrapper上调用.instance()来检索ReactComponent。
var test = mount(
<TestClass />
);
expect(test.instance().foo()).toBeTruthy();