这是我的 2 次尝试,它们也不起作用:
更新
在我的测试用例中,发现 <p> 标签适用于:
myDomNode.querySelectorAll('p')[0] // Success = [object HTMLParagraphElement]
但是查找react-routerLink生成的<a>标签失败:
myDomNode.querySelectorAll('a')[0] // = undefined
我的反应组件
export default class MyHeaderMenu extends React.Component {
render() {
return (
<div>
<Link to={`/`}>HOME</Link> {" | "}
<p>junk rat</p>
</div>
);
}
}
原帖
在测试文件顶部添加:
从'react-router'导入{链接};
尝试 1
笑话测试
it('Home text appears', () => {
const myDomNode = ReactDOM.findDOMNode(instance);
// This returns undefined: myDomNode.getElementsByTagName("a")[0]
// so innerHTML is failing.
const linkNode = myDomNode.getElementsByTagName("a")[0].innerHTML
expect(linkNode).toContain('Home');
});
尝试 2
玩笑测试2
it('Home text appears', () => {
const myDomNode = ReactDOM.findDOMNode(instance);
const myLinks = TestUtils.findAllInRenderedTree(instance,
function(component) {
if (component === Link) {
return true;
}
}
);
expect( myLinks[0].textContent ).toContain('Home');
});
这是我的 Jest 测试文件的顶部:
// __tests__/MyHeaderMenu-test.js
jest.unmock('../app/components/MyHeaderMenu');
import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';
import { Link } from 'react-router';
import MyHeaderMenu from '../app/components/MyHeaderMenu';
describe('MyHeaderMenu', () => {
const instance = TestUtils.renderIntoDocument(
<MyHeaderMenu />
);
it //... test cases start here ...