Ich versuche eine einfache Funktion zu testen, die einen Aufruf von window.location.search aufruft. Ich versuche zu verstehen, wie ich diesen Anruf stumm mache, damit ich eine URL meiner Wahl zurückgeben kann.sinon stub für window.location.search
Funktion:
getParameterByName: (name) =>
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]")
regexS = "[\\?&]" + name + "=([^&#]*)"
regex = new RegExp(regexS)
results = regex.exec(window.location.search) //Stub call to window.location.search
if(results == null)
return ""
else
return decodeURIComponent(results[1].replace(/\+/g, " "))
Testfall:
describe "Data tests",() ->
it "Should parse parameter from url",() ->
data = new Data()
console.log("search string: " + window.location.search) //prints "search string:"
window.location.search = "myUrl"
console.log("search string: " + window.location.search) //prints "search string:"
console.log(data.getParameterByName('varName'))
expect(true).toBe(true)
Mein ursprünglicher Versuch, einen Wert direkt wie so zurück war:
sinon.stub(window.location.search).returns("myUrl")
Dies ist natürlich nicht Arbeit. Ich glaube nicht, dass ich den Stub korrekt spezifiziere, aber er zeigt meine Absicht.
Irgendwelche Ideen auf, wie man das löst, würde sehr geschätzt werden.
Ich habe das schon einmal ausprobiert und habe es gerade noch einmal ausprobiert: 'TypeError: Versuch, die Stringeigenschaftssuche als Funktion zu umbrechen' –
oh sorry,' window.location.search' ist eine Zeichenkette, keine Funktion, also kannst du Mach es nicht aus. Ersetzen Sie den Stub durch eine Zuweisung: 'window.location.search =" myUrl "'. –
Seltsam, die Durchführung einer console.log vor und nach einer leeren Zeichenfolge, so dass ich nicht sicher bin, was los ist. Die Aufgabe bleibt nicht hängen. Ich habe meinen Code aktualisiert, um auch meinen Testfall zu zeigen. –