Jasmine:监视多个调用相同功能的Jquery选择器

时间:2015-06-30 15:14:16

标签: javascript jquery unit-testing jasmine bdd

在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()方面,是否可以实现这种级别的控制?

1 个答案:

答案 0 :(得分:0)

所以我基本上监视 $。fn 并使用 callFake 。在匿名函数中,我能够访问 this.selector 属性。从那里很简单。我希望这对任何人都有帮助!

spyOn($.fn, "val").and.callFake(function () {
                switch (this.selector) {
                    case "#firstSelector":
                        return "somethingElse";
                    case "#secondSelector":
                        return "";
                    default:
                        return "";
                }
});