4

我正在尝试使用业力(在 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;
}

这是我认为相关的图片(粘贴在一起):

在此处输入图像描述

4

0 回答 0