React路由器<link>如何在Jest测试中获取href的值
React Router <LINK>How to get value of href in Jest Test
React JS新手,并在Jest中编写测试用例以检查组件中的链接。我使用react-router
,对于使用<LINK to="{{pathname: link}}" />Link</LINK>
的链路,我使用react router 2.0。我看到一些帖子建议您需要以某种方式截断react路由器,但这些都与1.0版本有关。我还需要做类似的事情吗?我可以通过类选择来获得节点,但无法获得href
的值。
let link = TestUtils.findRenderedDOMComponentWithClass(widgetComponent, 'link');
let linkNode = ReactDOM.findDOMNode(link);
let renderedLink = linkNode.attributes['href'].value;
expect(renderedLink).toContain('test-link');
请告知。
我认为如果你想使用酶,这可能会奏效。如果你只关心匹配href(或链接"to"道具):,你可以做这样的事情
import React from 'react';
import { Link } from 'react-router';
import { shallow } from 'enzyme';
const wrapper = shallow(widgetComponent);
expect(wrapper.find(Link).props().to).toEqual('test-link');
这是我的两次尝试,它们也不起作用:
更新
在我的测试用例中,发现<p>
标签与一起工作
myDomNode.querySelectorAll('p')[0] // Success = [object HTMLParagraphElement]
但查找react-router
Link
生成的<a>
标签失败:
myDomNode.querySelectorAll('a')[0] // = undefined
我的React组件
export default class MyHeaderMenu extends React.Component {
render() {
return (
<div>
<Link to={`/`}>HOME</Link> {" | "}
<p>junk rat</p>
</div>
);
}
}
原始帖子
在测试文件顶部添加:从"react router"导入{Link};
尝试1
Jest测试
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
Jest测试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 ...
相关文章:
- 使用Jest测试React Native应用程序
- 运行反应测试时出错:Enzyme、Jest和react
- React路由器<link>如何在Jest测试中获取href的值
- Jest中的XMLHttpRequest测试
- 在使用Jest进行测试时,是否有更快的方法重置mock
- 测试React函数是用Jest调用的
- 如何使用 Jest 编写单元测试,用于 Promise 的代码
- 正则表达式在 Jest 测试中没有定义
- 在 Jest 测试中重置 ajax 模拟调用计数
- 如何使用 Jest 0.8.x 测试使用上下文的 React 组件,例如在 react-router 2.0 中
- 不能使用 resolve.alias 进行 JEST 测试
- Jest:找不到要测试的模块内部所需的模块(相对路径)
- 在 React with Jest 中测试模拟表单输入
- 使 react-router 不破坏 Jest (reactJs) 测试
- 如何在运行JEST测试用例时将全局变量设置为true
- 使用Jest和React JS TestUtils测试表单
- 使用Jest测试React Component函数
- 由于未解决的承诺,Jest中的异步测试失败
- 是否可以用jest测试react应用程序的入口点?
- 如何在Jest单元测试中查看渲染后的React组件