用磁带js模拟文档对象

时间:2017-03-31 07:55:38

标签: javascript unit-testing

我正在尝试对依赖于另一个使用文档对象的模块的模块(使用tapejs)进行单元测试,我得到“ReferenceError:document not defined”

// My module i want to test
import { createUrl } from '../config/paths';
// Paths.js
export const url = document.location.toString(); // This is where i'm getting the error.

我尝试使用proxyquire来代理这种依赖,但它似乎没有做任何事情。

const store = proxyquire('../../../store/list-store', {
'../config/paths': {
    createUrl: stub(),
},
});

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

使用proxyquire的noCallThru方法帮助我实现了这一目标。

根据代理商的文件:

  

默认情况下,proxyquire会在存根上找不到原始依赖项上定义的函数。

     

如果您更喜欢更严格的行为,可以在per上阻止callThru   模块或上下文基础。

我的解决方案:

const proxyquireStrict = proxyquire.noCallThru();
const Store = proxyquireStrict('../../../store/booking-add-store', {
    '../config/paths': {
        createUrl: () => stub().returns(''),
    },
}).default;