mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
@@ -44,6 +44,7 @@ function findAllInRenderedTreeInternal(inst, test) {
|
||||
}
|
||||
var publicInst = inst.getPublicInstance();
|
||||
var ret = test(publicInst) ? [publicInst] : [];
|
||||
var currentElement = inst._currentElement;
|
||||
if (ReactTestUtils.isDOMComponent(publicInst)) {
|
||||
var renderedChildren = inst._renderedChildren;
|
||||
var key;
|
||||
@@ -58,7 +59,10 @@ function findAllInRenderedTreeInternal(inst, test) {
|
||||
)
|
||||
);
|
||||
}
|
||||
} else if (ReactTestUtils.isCompositeComponent(publicInst)) {
|
||||
} else if (
|
||||
ReactElement.isValidElement(currentElement) &&
|
||||
typeof currentElement.type === 'function'
|
||||
) {
|
||||
ret = ret.concat(
|
||||
findAllInRenderedTreeInternal(inst._renderedComponent, test)
|
||||
);
|
||||
@@ -111,7 +115,8 @@ var ReactTestUtils = {
|
||||
// this returns when we have DOM nodes as refs directly
|
||||
return false;
|
||||
}
|
||||
return typeof inst.render === 'function' &&
|
||||
return inst != null &&
|
||||
typeof inst.render === 'function' &&
|
||||
typeof inst.setState === 'function';
|
||||
},
|
||||
|
||||
|
||||
@@ -410,4 +410,22 @@ describe('ReactTestUtils', function() {
|
||||
expect(handler).toHaveBeenCalledWith(jasmine.objectContaining({target: node}));
|
||||
});
|
||||
|
||||
it('can scry with stateless components involved', function() {
|
||||
var Stateless = () => <div><hr /></div>;
|
||||
var SomeComponent = React.createClass({
|
||||
render: function() {
|
||||
return (
|
||||
<div>
|
||||
<Stateless />
|
||||
<hr />
|
||||
</div>
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
var inst = ReactTestUtils.renderIntoDocument(<SomeComponent />);
|
||||
var hrs = ReactTestUtils.scryRenderedDOMComponentsWithTag(inst, 'hr');
|
||||
expect(hrs.length).toBe(2);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user