webpack - 导入*为( Jasmine spyOn)不可写

标签 webpack jasmine babeljs

升级到babel 7.1.5后,当我使用import * as时,我的测试失败。

test.spec.js

import * as Helper from "../../../../src/renderer/modules/Helper";

describe('Testing', () => {
    it('Should import correctly', () => {
        console.log(Helper.test()) // a
        spyOn(Helper, 'test').and.returnValue('b');
    });
});


Helper.js

function test() {
    return 'a'
}

export {test}


错误

'Upgrade.spec.js (7:8)', 'a'

Error: <spyOn> : test is not declared writable or has no setter
Usage: spyOn(<object>, <methodName>)
    at <Jasmine>
    at UserContext.it (webpack:///./test/unit/specs/renderer/Upgrade.spec.js?:7:5)
    at <Jasmine>

最佳答案

来源:Can webpack 4 modules be configured as to allow Jasmine to spy on their members?

有一个spyOnProperty,通过将accessType参数设置为'get'可以将属性视为只读。

您的设置将如下所示

import * as mod from 'my/module';
//...
const funcSpy = jasmine.createSpy('myFunc').and.returnValue('myMockReturnValue');
spyOnProperty(mod, 'myFunc', 'get').and.returnValue(funcSpy);

关于webpack - 导入*为( Jasmine spyOn)不可写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296840/

相关文章:

javascript - Angular/Jasmine : spying on method passed to $rootScope. $on 带和不带匿名函数包装器

angularjs - 使用 Grunt 进行 Angular js 测试

webpack 在 Jest 单元测试中需要非 js 内容

javascript - 无法从单个 .js 条目(导入多个 .scss 文件)中提取多个 .css 文件?

typescript - 后台脚本中的 Chrome 扩展 Firebase 不会始终加载

javascript - 尝试使用 jasmine-pit 进行测试时开 Jest 超时

javascript - React 中奇怪的语法错误

javascript - 使用ES6类扩展错误

typescript - 不能在 typeScript 和 Webpack 中使用 p5.js

javascript - Webpack 代码拆分影响 Web 性能