首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试反应材料-UI IconMenu。Simulate.click不工作

测试反应材料-UI IconMenu。Simulate.click不工作
EN

Stack Overflow用户
提问于 2016-04-26 23:29:05
回答 1查看 1.4K关注 0票数 2

我正在编写一个使用物料的react组件的测试用例-ui使用‘react test -utils’。由于某些原因,我无法让simulate.click为IconMenu工作,也不知道我做错了什么。我试图模拟点击图标按钮,这样我就可以在弹出窗口中迭代,得到菜单项并检查长度,但出于某种原因,我不知道我做错了什么。我还注意到,在单击PopoverDefaultAnimation时,在DOM 'Provider‘标记后面附加了一个’IconButton‘。谢谢!

这是我的组件,它可以很好地呈现

代码语言:javascript
复制
import React, {PropTypes} from 'react'
/** material-ui **/
import IconMenu from 'material-ui/IconMenu'
import IconButton from 'material-ui/IconButton'
import MenuItem from 'material-ui/MenuItem'
import Divider from 'material-ui/Divider'
import Help from 'material-ui/svg-icons/action/help-outline'
import getMuiTheme from 'material-ui/styles/getMuiTheme'


    export default class MndyHelp extends React.Component{
    constructor(props) {
        //console.log('Main: constructor()');
        super(props);
    }

     static childContextTypes = {
        muiTheme: React.PropTypes.object
    }
    getChildContext() {
        return {
            muiTheme: getMuiTheme()
        }
    }

    render(){

    var urlLink = "https://www.google.com";

        return(
            <IconMenu
                iconButtonElement={
                      <IconButton style={ {padding: 0, width: "auto", height: "auto", right: 44, top: 4 } } iconStyle={{ height: 30, width: 30, fill: "#304954"}}><Help/></IconButton>}>
                <MenuItem onTouchTap={() => {window.open(urlLink, '_blank');}} primaryText='Item1'/>
                <MenuItem onTouchTap={() => {window.open(urlLink, '_blank');}} primaryText='Item2'/>
            </IconMenu>
        );
    }
}

这是我的单元测试:

代码语言:javascript
复制
import React from 'react'

import {renderIntoDocument,
    scryRenderedDOMComponentsWithTag,
    scryRenderedComponentsWithType,
    Simulate
} from 'react-addons-test-utils'

import chai from 'chai'
import ReactDOM from 'react-dom'
import IconButton from 'material-ui/IconButton'
import IconMenu from 'material-ui/IconMenu'
import MenuItem from 'material-ui/MenuItem'
import Popover from 'material-ui/Popover';
import Help from 'material-ui/svg-icons/action/help-outline'
var should = chai.should(),
    expect = chai.expect;

import MndyHelp from './MndyHelp.jsx';
describe('<MndyHelp/>', () => {
    //render kndyhelp
    //get the iconbutton
    //get the popover
    //click the icon button

    it('should have 2 menuItems', () => {
        var domElement  = renderIntoDocument(<MndyHelp/>),
            buttons     = scryRenderedComponentsWithType(domElement,IconButton),
            firstButton = ReactDOM.findDOMNode(buttons[0]);
            Simulate.click(firstButton);
            var popOver = scryRenderedComponentsWithType(domElement,Popover);
            var menuItem = scryRenderedComponentsWithType(domElement,MenuItem);
            //make sure popover is open i.e. true
            expect(popOver[0].props.open).to.equal(true);
            //Make sure menu items exist
            expect(menuItem.length).to.not.equal(0);
            expect(menuItem.length).to.equal(2);
    });

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-27 00:09:14

您不能模拟单击,因为没有什么可单击的。

您有一个onTouchTap事件,不幸的是您不能在此使用Simulate.click,

实际上,您使用的插件阻止了单击:

当点击发生时,浏览器发送一个touchstart和touchend,然后在300 and之后发送一个click事件。如果单击事件已经被一个触摸事件(在上一个触摸事件的750 of内)立即执行,那么这个插件就会忽略它。

https://github.com/zilverline/react-tap-event-plugin

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36877585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档