我正在使用一些react-bootstrap
組件構建組件,特別是Modal
及其名稱間隔的子組件,例如, Modal.Heading
(或Modal.Title
,Modal.Body
等)。例如:在JEST測試中使用酶來查找React中名稱間隔的子組件
...
import { Modal } from 'react-bootstrap/lib';
import OtherComponent from './OtherComponent';
class MyComponent extends React.Component {
...
render() {
return (
<div>
<Modal>
<p>{someContent}</p>
<OtherComponent/>
<Modal.Header>{someOtherContent}</Modal.Header>
</Modal>
</div>
);
}
}
一個玩笑測試套件中使用酶我能找到Modal
組件的各種兒童,包括DOM元素和其他定製的反應的組分。但是我無法找到命名空間的子組件:
const modal = shallow(<MyComponent/>).find('Modal');
it('should find the Modal element',() => {
expect(modal).toHaveLength(1); // passes
});
it('should find a child DOM element',() => {
expect(modal.find('p')).toHaveLength(1); // passes
});
it('should find a regular child component',() => {
expect(modal.find('OtherComponent')).toHaveLength(1); // passes
});
it('should find a name-spaced child component',() => {
expect(modal.find('Modal.Header')).toHaveLength(1); // fails *****
});
我曾嘗試:如上圖所示
.find('Header')
,即離開過命名空間
.find('Modal.Header')
,即包括命名空間,mount(<MyComponent/>)
而不是shallow(<MyComponent/>)
與上述兩者結合find
選項
那麼,我該如何使用酶來找到一個名稱間隔的孩子組件?