通过grunt karma:unit命令运行测试用例(spec.js)时,我遇到了错误-
TypeError:无法分配为只读对象'[object Location]'的属性'assign'
引发错误的伪代码为:
$window.window.location.assign = _.noop;
spyOn($window.window.location, 'assign');
我试图在所有内容的下面放置一行以修复它,但是没有用-
$window.window.location.assign.writable = true;
有人可以分享他/她的观点来解决它吗?谢谢!!
答案 0 :(得分:1)
window.location.assign
不可写:
> Object.getOwnPropertyDescriptor(window.location, 'assign')
{value: ƒ, writable: false, enumerable: true, configurable: false}
这意味着您无法暂时覆盖它以对其进行监视。
我可以想到两种可能性:
window.location.assign
的所有调用,从而可以对其进行监视。2将更加困难,因为这可能会导致您离开测试。我建议1.一般而言,这是一个简单的重构,可大大简化您的测试。