在js中,a模块依赖b模块运行产生的数据(通过import引入b模块,a模块是一堆函数的集合,不包含数据)
我在单独测试a模块时,如何制造一个mock的b模块数据给a模块同时不改变a模块的代码
(貌似java是有这种测试框架的?就是能用mock模块替代依赖模块?)
目前单元测试用的是mocha+karma,webpack转译es6语法
样例代码
a.js
import b from './b'
export function search(id) {
for(let i in b.data) {
if(b.data[i].id === id) {
return b.data[i].value
}
}
return -1
}
a.test.js
import { expect } from 'chai'
import { search } from '../src/a'
describe('search Test', function() {
it('search certain id return its value' , function() {
expect(search(1)).to.equal('value of 1')
})
})
试试sinon呗,按你的需求:
补充:
我假设你的
b.js
是如下结构:现在来补一下test: