2016-08-24 69 views
0

我处于奇怪的状态(我使用Jest/React/Flux/Webpack)...这里是测试文件。Jest mocking不适用于特定文件

jest.unmock('../dashboard'); 

import CommonUtils from "../utils/CommonUtils"; 

describe('Dashboard Page',() => { 
    it('creates',() => { 
     ... 
    }); 
}); 

当我运行测试,抛出一个错误:

● Runtime Error 
    - TypeError: (0 , _shouldUpdate2.default) is not a function 
     ... 
     at Object.<anonymous> (src\main\js\components\App.js:3:38) 
     at Object.<anonymous> (src\main\js\utils\CommonUtils.js:4:38) 
     at Object.<anonymous> (src\test\js\dashboard-test.js:3:46) 

这里,CommonUtils显然不是嘲笑。在我的其他文件中,自动模拟工作得很好。

如果我添加在测试文件的开头:

jest.mock('../utils/CommonUtils'); 

以前同样的错误。不过,如果我补充一点:

jest.mock('../utils/CommonUtils',() => { 
    return {someFunc: jest.fn()}; 
}); 

CommonUtils现在嘲笑,但我不能比较来自someFunc的模拟对象,因为它总是被重新创建...并且我不能创建外部变量

var a = {someFunc: jest.fn()}; 
jest.mock('../utils/CommonUtils',() => { 
    return a; 
}); 

Jest不允许!

+0

你想要测试'someFunc'来调用某些东西吗?你可以显示你的代码 – grgmo

+0

最后,我已禁用automock,这太棘手。谢谢! –

回答

0

最后我已经更新了Jest,并且它禁用了自动模拟。这不是确定性的,但不能重现。