Tôi đang cố thử nghiệm một hàm đơn giản thực hiện lệnh gọi window.location.search. Tôi đang cố gắng tìm hiểu cách thực hiện cuộc gọi này để tôi có thể trả lại url mà tôi chọn.sinon stub cho window.location.search
chức năng:
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, " "))
Kiểm tra trường hợp:
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)
nỗ lực ban đầu của tôi là trả lại một giá trị trực tiếp như vậy:
sinon.stub(window.location.search).returns("myUrl")
này, tất nhiên, không công việc. Tôi không nghĩ rằng tôi đang xác định sơ khai một cách chính xác, nhưng nó cho thấy ý định của tôi.
Bất kỳ ý tưởng nào về cách giải quyết vấn đề này sẽ được đánh giá cao.
Tôi đã thử điều đó trước và tôi lại thử lại: 'TypeError: Đã cố gắng tìm kiếm thuộc tính chuỗi như chức năng ' –
oh xin lỗi,' window.location.search' là một chuỗi không phải là hàm, vì vậy bạn có thể 't stub nó. Thay thế stub bằng một nhiệm vụ: 'window.location.search =" myUrl "'. –
Lạ lùng, thực hiện một giao diện điều khiển.log trước và sau khi kết quả trong một chuỗi trống, vì vậy tôi không chắc chắn những gì đang xảy ra. Nhiệm vụ không gắn bó. Tôi đã cập nhật mã của mình để hiển thị trường hợp thử nghiệm của mình. –