angular - Jasmine - 测试 execCommand
问题描述
我正在尝试使用 jasmine 测试我的 Angular 应用程序,其中组件具有单击和复制功能。
it('Should copy value to cilpboard', () => {
...
spyOn(document, 'execCommand').and.callThrough();
// element.querySelector('#copy').click();
// expect(document.execCommand).toHaveBeenCalledWith('copy');
});
但是每次我运行测试时,都会出现以下错误:
spyOn : execCommand() 方法不存在
我没有在任何地方声明“文档”,我只是在这里直接调用它。
解决方案
我认为您需要在文档而不是元素上执行命令。我知道您已经在上面的代码片段中评论了该代码,但是,如果文档没有得到命令,您可以尝试并测试吗
document.querySelector('#copy').click();
然后期待
expect(document.execCommand).toHaveBeenCalledWith('copy');
注意:运行此测试时,您的文档上应该有一个带有 id 副本的元素。我不确定它是否是从您的组件创建的,如果不是,请 createElement 并附加到 dom
推荐阅读
- amazon-cognito - 联合登录时的 AWS Cognito 预身份验证 lambda 触发器
- html - Primeng 表获取当前显示的行数
- spring - Apache骆驼动态路由
- linux - bash:如何在脚本的多个实例之间保持一些延迟
- google-kubernetes-engine - gke 上的 istio 版本和升级
- c - free():无效指针中止(核心转储)cs50
- c# - C# WPF Window.Closed 只触发一次
- java - 如何在 OptaPlanner 的运行时移除移动生成器?
- google-cloud-platform - 尝试安装 gcloud 命令行工具时出现“没有这样的文件或目录”
- javascript - JQuery 更新后 ng-transclude 不再起作用