【问题标题】:Jasmine - testing execCommandJasmine - 测试 execCommand
【发布时间】:2021-05-13 23:41:38
【问题描述】:

我正在尝试使用 jasmine 测试我的 Angular 应用程序,其中组件具有单击和复制功能。

it('Should copy value to cilpboard', () => {
  ...
  spyOn(document, 'execCommand').and.callThrough();
  // element.querySelector('#copy').click();
  // expect(document.execCommand).toHaveBeenCalledWith('copy');
});

但每次我运行测试时都会收到以下错误:

spyOn : execCommand() 方法不存在

我没有在任何地方声明“文档”,我只是在这里直接调用它。

【问题讨论】:

  • 试试const spyExecCommand = spyOn(document, 'execCommand').and.callThrough(); expect(spyExecCommand ).toHaveBee...

标签: angular testing jasmine karma-jasmine


【解决方案1】:

我认为您需要在文档而不是元素上执行命令。我知道你已经在上面的 sn-p 中注释了该代码,但是,如果文档没有得到命令,你可以尝试一下并测试一下

 document.querySelector('#copy').click();

然后期待

expect(document.execCommand).toHaveBeenCalledWith('copy');

注意:在运行此测试时,您的文档上应该有一个带有 id 副本的元素。我不确定它是否是从您的组件创建的,如果不是,请 createElement 并附加到 dom

【讨论】:

  • 我试过了,但还是不能识别命令,可能是我项目的包有问题
  • 尝试安慰 document.querySelector('#copy') 并检查您的规范是否有 #copy id -element
猜你喜欢
  • 2012-06-14
  • 1970-01-01
  • 2016-02-14
  • 2013-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多