我正在尝试使用karma(在PhantomJS2上),茉莉花和酶来测试我的反应应用程序。我注意到我的一些测试失败了。这似乎是因为每个块被调用两次(我通过在所有块中放置打印并且它们都打印两次来确认这一点)。我找到了解决方案,但似乎都没有。我将尽可能多地包含细节。
这是我的karma.config文件:
files: [
{ pattern: 'test/**/*.tsx' }
],
我也尝试了这些,但这与上面的结果相同:
files: [
{ pattern: 'test/**/*.tsx', watched: false, served: true, included: true }
],
我也试过这个,但这导致业力破裂:
files: [
{ pattern: 'test/**/*.tsx', included: false }
],
这里有一个我运行两次的块的示例(虽然如果运行则会通过,但是关闭的长度导致其他测试失败,我注释掉了):
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;
}
以下是我觉得相关的图片(粘贴在一起):