Я пытаюсь протестировать простую функцию, которая вызывает window.location.search. Я пытаюсь понять, как заглушить этот вызов, чтобы я мог вернуть URL-адрес по своему выбору.
функция:
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, " "))
Тестовый пример:
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)
Моя первоначальная попытка состояла в том, чтобы вернуть значение непосредственно так:
sinon.stub(window.location.search).returns("myUrl")
Это, конечно, не работает. Я не думаю, что правильно указываю заглушку, но это показывает мое намерение.
Буду очень признателен за любые идеи о том, как решить эту проблему.