监视木偶电话

时间:2020-04-18 12:22:14

标签: jasmine puppeteer jest-puppeteer

我正在构建一个使用puppeteer的网络抓取工具。显然,我想确保在解决问题时不会破坏工作,因此我正在编写一些实现测试。

我将如何测试以下代码?问题是newPage()是嵌套的,我不知道如何为其创建间谍。

有什么想法吗?我是否应该以不同的方式构造代码以使其更容易测试(根据我所读过的内容,这是一个很大的禁忌)。很高兴听到您的建议。

//myFile
myFn(){
let browser = puppeteer.launch()
let page = browser.newPage();
}



describe('searchAddress', () => {
            beforeEach(() => {
                browserSpy = spyOn(puppeteer,'launch')
                pageSpy = spyOn(puppeteer,'newPage') // <--- ????


            })
            it('should ensure the calls were made', async () => {
                await myFn()
                expect(sleepSpy).toHaveBeenCalled();
                expect(pageSpy).toHaveBeenCalled();


            });

        });

1 个答案:

答案 0 :(得分:0)

在这种情况下,spyOn(puppeteer,'launch')应该返回一个对象,其中包含用于newPage调用的间谍对象。我的意思是:

describe('searchAddress', () => {
    let newPageSpy;
    let browserSpy;
    beforeEach(() => {
        // ARRANGE
        newPageSpy = jasmine.createSpy();
        let browserMock = { newPage: newPageSpy };
        browserSpy = spyOn(puppeteer, 'launch').and.returnValue(browserMock);  
    });
    it('should ensure the calls were made', async () => {
        // ACT
        await myFn();
        // ASSERT
        expect(newPageSpy).toHaveBeenCalled();
    });
});