如何在特定函数的作用域内注入模拟?

时间:2019-02-14 12:37:30

标签: javascript unit-testing mocking

我必须测试文件 index.js 中的下一个Utility功能:

function getQParams(){
    var url = window.location.href
    var params = url.split('?')[1];
    return params;
}

我使用此测试创建了一个新的测试文件 index.test.js

it('should get all the params', () => {
    var result = utils.getQParams();
    assert.isNotNull(result);
});

但是很显然,它在测试执行时间中没有定义窗口。

我的目标是不修改index.js文件,使用假href参数注入模拟的窗口对象。

但是我似乎无法尝试使用(newcontext),在测试文件中创建全局变量,将模拟库用作sinonJS,但是我没有找到解决方案。

有没有一种方法可以执行它并提供一个作用域,使该函数在其作用域中具有模拟窗口?

任何帮助或建议将不胜感激。

谢谢!

0 个答案:

没有答案