- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的程序使用 printJS这是一个帮助格式化页面内容以供打印的库。我想用 cypress 编写测试来测试是否调用了打印预览。目前我有一个按钮在单击时调用 printJS,并且由于 cypress 无法与打印预览窗口交互,我认为将对 printJS 的调用 stub 然后写一个它被调用一次的断言是个好主意。我知道这适用于 window.print(),因为您可以使用此代码 stub 。
cy.visit('http://127.0.0.1/',{
onBeforeLoad: (win) => {
cy.stub(win, 'print')
}
})
然后断言
cy.contains('print').click()
cy.window().then((win) => {
expect(win.print).to.be.calledOnce
})
我的旧按钮
<button type="button" class="btn btn-secnodary" onclick="window.print()">
Print
</button>
但是我使用了 printJS,这意味着我的按钮现在看起来像这样
<button type="button" onclick="printJS({printable: 'id_preview_modal_body', type: 'html'})" data-dismiss="modal">
Print
</button>
javascript 作为 print.min.js 加载,可以在 here 中找到.我试图对 contentwindow 进行 stub ,但到目前为止似乎还行不通。在 printJS 的代码中,打印发生在这里
frameElement.contentWindow.print()
来自 their github page , 第 63 行
我 stub 的方式给出了这个问题
cy.visit('http://127.0.0.1:8000/notices/new/',{
onBeforeLoad: (win) => {
cy.stub(win, 'printJS')
}
})
Uncaught TypeError: Cannot stub non-existent own property printJS
断言也给出了这个错误
cy.window().then((win) => {
expect(win.printJS).to.be.calledOnce
})
TypeError: [Function: init] is not a spy or a call to a spy!
我认为 [Function: init]
是从他们的 index.js
file 引用 const printJS = print.init
.但我不知道如何进一步调试这个问题。任何帮助,将不胜感激。谢谢!
最佳答案
问题是 onBeforeLoad
Hook 在 printJS 启动之前被调用,当 printJS 被导入时它调用它的 init()
函数并覆盖你在 window 中的 stub .print
.
stub 太早了
cy.visit('http://127.0.0.1:8000/notices/new/',{
onBeforeLoad: (win) => {
cy.stub(win, 'printJS')
}
})
在组件加载并启动 printJS 后 stub
const printStub
before(function(){
cy.visit('http://127.0.0.1:8000/notices/new/')
// maybe wait for loading to complete
cy.window().then(win => {
printStub = cy.stub(win, 'printJS')
})
})
it('stubs printJS', () => {
cy.contains('button', 'Print').click()
cy.window().then(win => {
expect(printStub).to.be.calledOnce
})
})
关于javascript - 如何用 Cypress stub contentwindow.print/用 Cypress 测试 printJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53505706/
使用 printjs 库的语义 ui 模态 ptint。但结果不是正确显示预期的模态打印。帮助? $(document).ready(function(){ $('#logIn').click(fun
尝试使用 printJS 从浏览器直接打印 PDF 文件到网络打印机。但出现错误:“在此服务器上找不到请求的 URL/docs/pricelist.pdf” 但是文件就在那里。我可以使用 anchor
我正在尝试在 Angular 中使用 printJS 并打印图像 (PNG)。我做了导入: import { printJS } from "print-js/dist/print.min.j
我的程序使用 printJS这是一个帮助格式化页面内容以供打印的库。我想用 cypress 编写测试来测试是否调用了打印预览。目前我有一个按钮在单击时调用 printJS,并且由于 cypress 无
我是一名优秀的程序员,十分优秀!