在JavaScript中,我有一个我想使用 Jasmine 2.1.3 进行测试的函数:
function someFunction(){
var $firstSelector = $("#firstSelector").val();
var $secondSelector = $("#secondSelector").val();
// some function logic
}
如何监视 $ firstSelector.val()和 $ secondSelector.val(),为每个测试我的函数提供定义的返回值? 例如(我想监视$ firstSelector.val()返回“Hello”和$ secondSelector.val()返回“World”)。
我已经阅读了暗示通用 $。fn 并为val返回值的答案。但是我不确定它是如何让我控制手动设置传入的不同JQuery选择器的返回值。这里有一个概念我不见了吗?
在使用不同选择器作为参数模拟JQuery $(someSelectorVariable).val()方面,是否可以实现这种级别的控制?
答案 0 :(得分:0)
所以我基本上监视 $。fn 并使用 callFake 。在匿名函数中,我能够访问 this.selector 属性。从那里很简单。我希望这对任何人都有帮助!
spyOn($.fn, "val").and.callFake(function () {
switch (this.selector) {
case "#firstSelector":
return "somethingElse";
case "#secondSelector":
return "";
default:
return "";
}
});