繁体   English   中英

如何使用 jest puppeteer 获取脚本变量值?

[英]How to get script variable value with jest puppeteer?

我正在尝试对一个项目进行单元和 e2e 测试,我决定使用 jest 和 puppeteer(还有 jest-puppeteer)来实现这一点。

我的问题是我在 index.html 的脚本中初始化了一个名为 tools 的变量,我想让它在之后进行一些测试,但他返回给我一个错误,即“工具”未定义。

我已经尝试在网上查看是否存在解决方案但没有成功。

我可以帮忙吗? :')

代码摘录:

// index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset='utf-8'>

        <script src="./js/Variables.js"></script>
        <script src="./js/Tools.js"></script>
    </head>

    <body>
        <script>
            tools = new Tools();
        </script>
    </body>
</html>
// Variables.js
let tools;
// Tools.js
class Tools {
    constructor(){
        // do some stuff
    }

    test(){
        return "test string";
    }
}
// app.test.js
jest.setTimeout(60_000);

beforeAll(async () => {
    await page.goto('http://myPage/');
});

test("is the good site", async () => {
    await expect(page.title()).resolves.toMatch('This is my page');
});

describe("Tools", () => {
    test("can i get \"tools\"", async () => {
        console.log(tools.test()); // tools is not defined
        expect(tools.test()).toBe("test string");
    });

编辑 22/07/2022 15:38

我终于设法得到了一些东西

let tools = await page.evaluate('tools');

但现在我不能在上面使用函数,错误说 tools.test() 不是函数,它似乎只得到他的值而不是 Tools 实例的值。

describe("Tools", () => {
    test("can i get \"tools\"", async () => {
        let tools = await page.evaluate('tools');
        console.log(tools); // gets {}
        expect(tools.test()).toBe("test string"); // TypeError: tools.test() is not a function
    });

let toolsTest = await page.evaluate('tools.test()'); 不适用于错误评估失败:TypeError: tools.test() is not a function。

我该怎么办? D':

我通过使用得到一些东西

let toolsTest = await page.evaluate(() => tools.test());

所以我将开始编写代码。

然而let tools = await page.evaluate(() => tools); 仍然没有给我实例,真的没有办法做到这一点吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM