我最近将组件包装在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。
答案 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选择器。