我正在尝试编写一个测试,以确保何时以及何时将有效的URL arg传递给函数,它会运行windows.open(args)
来打开它。然后确保我专注于此。
测试链接的有效性:
export function isValidURL(url: string): boolean {
try {
new URL(url)
return true
} catch (e) {
console.warn(`Invalid URL: ${url}`)
return false
}
}
打开链接:
export function openURL(url: string): void {
if (isValidURL(url)) {
const exTab = window.open(url, "_blank")
if (exTab) exTab.focus()
}
}
我以为我应该模拟一些功能,也许要假冒它的对数,然后等待它的呼叫次数或类似的次数。但是我对玩笑和测试并不陌生,我对如何做到这一点感到很困惑。
我的issay:
describe("Test tools.openURL()", () => {
test("it should open link if valid.", () => {
const urlError: string = "htts//url2.de9v"
const urlSuccess: string = "https://www.url1.dev"
const dontOpenMocking = jest.spyOn(window, "open").mockImplementation()
const openMocking = jest.spyOn(window, "open").mockImplementation()
expect(dontOpenMocking).toHaveBeenCalledTimes(0)
expect(openMocking).toHaveBeenCalled()
})
})
'open'
是只读属性。尝试:
Object.defineProperty(window, 'open', { value: <your mock> });