方法“模拟”旨在在1个节点上运行。找到0个代替

时间:2019-07-07 09:59:34

标签: jestjs enzyme

我最近将组件包装在ThemeProvider的测试中。当我运行测试时,它会引发以下错误

  

'方法“模拟”旨在在1个节点上运行。改为找到0个

在包装之前,它工作正常。我该如何解决这个问题?我在GitHub上发现了许多与此类似的问题,并且我尝试了所有这些方法,但仍然遇到相同的错误。

包装前的代码:

 test('handleSelect function called on option select', () => {
    const handleSelectSpy = sinon.spy();
    wrapper = mount( 
        <Dropdown handleSelect={handleSelectSpy} options={options} />
    );
    dropdown = wrapper.find('Dropdown');
    dropdown
      .find('InputBase')
      .find('[role="button"]')
      .simulate('click');
    expect(true).toBe(true);
  });
});

包装后的代码:

 test('handleSelect function called on option select', () => {
    const handleSelectSpy = sinon.spy();
    wrapper = mount(
      <ThemeProvider>
        <Dropdown handleSelect={handleSelectSpy} options={options} />
      </ThemeProvider>,
    );
    dropdown = wrapper.find('Dropdown');
    dropdown
      .find('InputBase')
      .find('[role="button"]')
      .simulate('click');
    expect(true).toBe(true);
  });
}); 

错误: 下拉列表-完整DOM渲染›在option select上调用的handleSelect函数 方法“模拟”旨在在1个节点上运行。改为找到0。

1 个答案:

答案 0 :(得分:0)

Scaffold

如果这是组件类名/构造函数,则应不带引号:

appBar: PreferredSize(
        preferredSize: Size.fromHeight(50.0),
        child: SizedBox(
          height: 100.0,
          child: Card(
            elevation: 10.0,
            color: Colors.white.withOpacity(0.8),
            clipBehavior: Clip.antiAlias,
            margin: EdgeInsets.only(top: 30.0, left: 10.0, right: 10.0),
            child: Stack(
              children: <Widget>[
                GestureDetector(
                  onTap: () {
                    _key.currentState.openDrawer();
                  },
                  child: Padding(
                    padding: const EdgeInsets.only(top: 9.0, left: 10.0),
                    child: Icon(FontAwesomeIcons.bars, color: Colors.grey[800]),
                  ),
                ),
                Padding(
                  padding: const EdgeInsets.only(top: 13.0, left: 50.0),
                  child: TextField(
                    decoration: InputDecoration.collapsed(
                      hintText: 'Search... ',
                      hintStyle: TextStyle(fontFamily: 'Monospace')
                    ),
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    _key.currentState.openEndDrawer();
                  },
                  child: Padding(
                    padding: const EdgeInsets.only(top: 9.0, left: 305.0),
                    child: Icon(FontAwesomeIcons.slidersH, color: Colors.grey[800]),
                  ),
                )
              ],
            ),
          ),
        )
      ),

只能在引号内使用CSS选择器。