我要测试以下功能
function tradePage() {
setTimeout(function() {
window.location.pathname = document
.getElementById('button')
.getAttribute('new-page');
}, 100);
}
我编写了以下测试:
test('should change page when button is clicked', () => {
var button = document.querySelector('#button');
jest.useFakeTimers();
button.dispatchEvent(createEvent('click'));
jest.runAllTimers();
expect(window.location.pathname).toEqual('/new-url');
});
但是当我运行测试时,出现此错误:
expect(received).toEqual
Expected value to equal:
"/new-url"
Received:
"blank"
我已经完成/尝试过的事情
"testURL"
。我发现了这个可能的解决方案(不起作用):
Object.defineProperty(window.location, 'pathname', {
writable: true,
value: '/page/myExample/test',
});
有什么想法我还能尝试吗?
答案 0 :(得分:1)
通过在测试开始时声明一个全局变量,我找到了一种可行的方法:
global.window = { location: { pathname: null } };
并按如下所示检查此变量:
expect(global.window.location.pathname).toEqual('/new-url');
那很好。
答案 1 :(得分:0)
Object.assign(location, { host: "www.newhost.com", pathname: 'file.txt' });
它将更新所有location
URL对象属性(origin, href, hostname, host
)。
因此最终的href
属性将是https://www.newhost.com/file.txt
。
在beforeEach
块中执行此操作。
只需致电console.log(location)
来验证结果。编码愉快!