监视木偶师的电话



我正在构建一个使用puppeteer的web scraper。很明显,我想确保我在解决问题时不会把事情搞砸,所以我正在写一些实现测试。

我该如何测试下面的代码?问题是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();

});
});

在这种情况下,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();
});
});

最新更新