【问题标题】:How to mock browser globals in playwright?如何在剧作家中模拟浏览器全局变量?
【发布时间】:2022-01-25 23:33:26
【问题描述】:

我正在寻找一种在剧作家测试中模拟全局变量的方法。

我试过跑步

page.evaluate(() => {
  window.myVar = jest.fn();
});

但是,我得到 page.evaluate: ReferenceError: jest is not defined - 这是有道理的,因为评估是在浏览器中运行的,而 jest 在运行器中......

有没有办法在浏览器中模拟事物?

(对于上下文,我为什么要这样做 - 我正在创建一个谷歌应用程序脚本应用程序,它始终在运行时提供 google api,所以我需要在我的测试中模拟它......)

【问题讨论】:

    标签: mocking playwright


    【解决方案1】:

    您可以使用exposeFunction 在您这边运行代码:

    await page.exposeFunction('myMock', () => console.log('This function runs on the node side'));
    await page.evaluate(() => {
      window.myVar = myMock();
    });
    
    

    【讨论】:

    • 嗨,谢谢,公开一个对我自己的函数有效的函数,但是,我无法让 jest.fn() 公开,它总是说“意外值”:/
    • 是的。您可能需要构建一些使用 jest.fn() 的包装器。
    • 谢谢,我仍然不太确定我将如何做到这一点,以及我将如何在模拟中断言......这可能吗?您能否将其添加到您的答案中?我愿意接受 :)
    猜你喜欢
    • 2021-05-04
    • 2020-10-09
    • 2016-04-26
    • 1970-01-01
    • 2016-07-06
    • 2016-11-15
    • 1970-01-01
    • 2017-03-19
    相关资源
    最近更新 更多