Я пытаюсь написать тест, чтобы убедиться, что когда и когда я передаю действительный URL-адрес аргументу функции, она запускает 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()
}
}
Я подумал, что мне следует смоделировать какую-то функцию или, возможно, подделать ее код, затем дождаться его номера вызова или чего-то в этом роде. но я новичок в шутке и тестировании, и я так растерялся из-за того, как это можно сделать.
Мой вопрос:
describe("Test tools.openURL()", () => {
test("it should open link if valid.", () => {
const { open } = window
delete window.open
window.open = jest.fn()
openURL("htts//url2.de9v")
expect(window.open).not.toHaveBeenCalled()
openURL("https://www.url1.dev")
expect(window.open).toHaveBeenCalled()
window.open = open
// test focus here
})
})
С этим кодом у меня естьудалось проверить open
, теперь мне просто нужно проверить focus
.