我正在尝试测试一个简单的函数,该函数调用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")
当然,这样做是行不通的。我认为我没有正确指定存根,但这表明了我的意图。
如果您有解决此问题的任何想法,将不胜感激。
TypeError: 尝试将字符串属性search包装成函数
。 - Michael D Johnsonwindow.location.search
是一个字符串而不是函数,因此您无法对其进行存根。请使用赋值语句替换存根:window.location.search = "myUrl"
。 - Chris Salzberg