Ich versuche, die folgende FunktionTesting document.createElement ('a') mit Mokka/Chai/Sinon
export const checkForDuplicateUrl = (containers, url) => {
let a = document.createElement('a')
a.href = url
const urlHostName = a.hostname
return containers.find((container) => {
let b = document.createElement('a')
b.href = container.url
return urlHostName === b.hostname
})
}
Diese Funktion nimmt in einer Reihe von containers
und einer bestimmten URL zu testen. Sollte der Hostname der URL mit dem Hostnamen eines der einzelnen containers
übereinstimmen, möchte ich diesen Container zurückgeben. Diese Methode funktioniert gut, aber ich bin mir nicht sicher, wie ich das testen soll oder auch, wenn ich sollte. Ich schrieb einen Test, der zunächst so ausgesehen:
describe('#checkForDuplicateUrl',() => {
const containers = [
{ id: 4, url: 'https://www.party.com'},
{ id: 5, url: 'elainebenes.com'}
]
let url
describe('when there is a duplicate container and the passed in are the same',() => {
url = 'www.party.com'
it('returns the container',() => {
expect(checkForDuplicateUrl(containers, url).id).to.equal(4)
})
})
describe('when there is a duplicate container and the passed in are the same hostname but one lacks www',() => {
url = 'party.com'
it('returns the container',() => {
expect(checkForDuplicateUrl(containers, url).id).to.equal(4)
})
})
describe('when there is a duplicate container and the passed in are the same hostname but one has https',() => {
url = 'www.party.com'
it('returns the container',() => {
expect(checkForDuplicateUrl(containers, url).id).to.equal(4)
})
})
})
Das Problem ist, dass, wenn ich dies in meiner Testumgebung laufen, document.createElement('a')
immer localhost
haben wird, wie es Hostnamen, so dass es nicht wirklich wichtig, was Ich gebe an.
Wenn ich versuche, die document.createElement()
mit sinon auszugeben, dann teste ich wirklich nichts, da ich den Hostnamen jedes Mal manuell zurückgeben muss.
Sollte ich diese Funktion auch testen? Wenn ja, wie sollte ich es testen?