После очередного тестирования ... Я наткнулся на интересное поведение, которое я не понимаю.
Код:
function someFunction() {
... // whatever this is stubbed
}
// below is called ("mounted") by finalDOM.mountUserActions()
$("#button").click(function() {
savedElement = $("#saved_element")
console.log("BEFPRE THEN in event listener ==========")
console.log("found saved_element? = " + savedElement.length)
console.log("found unsaved_element? = " + $("#unsaved_element").length)
someFunction().then(function(result){
console.log("INSIDE THEN in event listener ==========")
savedElement.val(result)
$("#unsaved_element").val(result)
console.log("ensure result is found = " + result)
console.log("found saved_element? = " + savedElement.length)
console.log("found unsaved_element? = " + $("#unsaved_element").length)
})
})
Код теста:
fdescribe("on click of button", function() {
beforeEach(function(){
response = Promise.resolve("test")
spyOn(window, "someFunction").and.returnValue(response)
savedElement = affix("#saved_element")
affix("#unsaved_element")
affix("#button")
finalDOM.mountUserActions();
$("#button").click()
})
it("should change value of saved_element", function() {
response.then(function() {
console.log("INSIDE SPEC EXPECTATION ==========")
console.log("value of saved_element = " + savedElement.val())
console.log("value of unsaved_element = " + $("#unsaved_element").val())
expect(savedElement.val()).toEqual("test") // PASS
expect($("#unsaved_element").val()).toEqual("test") // FAIL
})
})
})
Вывод на консоль:
BEFPRE THEN in event listener ==========
found saved_element? = 1
found unsaved_element? = 1
INSIDE THEN in event listener ==========
ensure result is found = test
found saved_element? = 1
found unsaved_element? = 0
INSIDE SPEC EXPECTATION ==========
value of saved_element = test
value of unsaved_element = undefined
Тот факт, что длина обоих элементов равна 1 в BEFORE THEN in event listener
, доказывает, что аффикс работал, оба элемента находятся на странице, так почему же только сохраненный элементнайден один раз INSIDE THEN in event listener
?
Я не думаю, что когда-либо сталкивался с этим ... это гоча Javascript или жасмин?Хотелось бы узнать больше об этом, чтобы избежать этого в будущем ... потратил много времени на то, чтобы почесать мне голову.