我们使用javascript框架(没有反应)来渲染ui。 main.js
function logout(){
someObj.lock($('#container'), 'Logging out', true);
document.location = app.context + `/${appName}/signout.action?name=${appName}`;
}
function action(event){
switch(event.target){
case 'user:logout':
logout();
break;
case 'user:application':
document.location = app.context + "/";
break;
}
}
module.exports = {
action: action,
logout: logout
}
main.js和另一个js文件呈现导航栏和下拉列表。我的目的是检查是否呈现了导航栏中的标题,下拉列表。我也是 我正在测试浏览器重定向是否以正确的方式进行。
action方法接受一个事件对象,并根据其类型执行注销('user:logout')或重定向到应用程序页面('user:application')。
测试 /main.js
import main from '../main';
describe("some title", () => {
it("some behavior", () => {
let event = {
target: 'user:logout'
}
let app = {
context: ''
}
let appName = 'Some app';
main.logout = jest.fn();
someObj = jest.fn();
someObj.lock = jest.fn();
document.location.assign = jest.fn();
main.action(event);
expect(main.logout).toHaveBeenCalled();
expect(document.location.assign).toBeCalledWith(app.context + `/${appName}/signout.action?name=${appName}`);
})
});
在测试文件中,我正在尝试模拟注销功能。但是它正在执行someObj.lock函数。 someObj不适用于测试 /main.js 而且我也在嘲笑它。我不确定是否必须使用spyOn。我正在使用document.location.assign来测试浏览器重定向。 此测试无效,终端显示TypeError:无法将“/ application name / signout.action?name = application name”解析为URL。
我花了一整天的时间来测试这个功能,但无济于事。我需要一些关于测试此功能的最佳方法的建议。
探索的链接:fiddle
jest documentation