我正在尝试使用业力(在 PhantomJS2 上)、茉莉花和酶来测试我的反应应用程序。我注意到我的一些测试失败了。似乎是因为每个 it 块都被调用了两次(我已经通过在我的所有 it 块中放置打印件来确认这一点,并且它们都打印了两次)。我已经查找了解决方案,但似乎没有一个有效。我将包括尽可能多的细节。
这是我的 karma.config 文件:
files: [
{ pattern: 'test/**/*.tsx' }
],
我也尝试过这些,但结果与上述相同:
files: [
{ pattern: 'test/**/*.tsx', watched: false, served: true, included: true }
],
我也试过这个,但这导致业力中断:
files: [
{ pattern: 'test/**/*.tsx', included: false }
],
这是我的一个运行两次的 it 块的示例(尽管如果运行它会通过,但长度关闭会导致其他测试失败,我已将其注释掉):
it('renders the items', () => {
const wrapper = mount(<PortfolioList />);
const length = 5;
const items = fillArray(length);
// tslint:disable-next-line:no-console
console.log('LENGTH: ' + items.length); //OUTPUTS(twice): LENGTH: 10
wrapper.setState({results: items});
expect(wrapper.find('tbody').children().length).toBe(length);
});
这是fillArray,甚至认为它被调用了两次。在我的示例中,它不应该两次返回大小为 5 的数组吗?为什么是10?:
function fillArray(length: number) {
const ary = new Array(length);
for (let i = 0; i < length; i++) {
ary.push(item);
}
return ary;
}
这是我认为相关的图片(粘贴在一起):