javascript - Jasmine .js : How to spyOn a dropdown list

标签 javascript angularjs unit-testing jasmine

我的脚本中有一个 fromDate 文本字段:

      var fromDate = document.getElementById('fromDate').value;

我知道如何监视 jasmine.js 中的这个文本框:

    var params = {
    'fromDate': { value: '01/01/2010' },
         };

      beforeEach() {
      spyOn(document, 'getElementById').and.callFake(function (arg) {
            return params[arg];
        });
      }

同样,我也从脚本中的下拉列表中提取值,如下所示:

    var invId = $('#cboInv').find('option:selected').val();

现在我该如何监视呢?请帮忙。

最佳答案

我找到了 mock 它的方法。

因为它是一个链式调用,所以在 spyOn() 函数中我们还需要另一个方法来模拟 val():

spyOn($.fn, 'find').and.callFake(function (arg) {
    var valInternal = function () {
        return 'myCustomId';
    };
    return {
        val: valInternal
    };
});

关于javascript - Jasmine .js : How to spyOn a dropdown list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25974049/

相关文章:

java - 这个特定方法的 JUnit 测试

python - 如何在所有测试和拆卸完成后调用一次设置

c# - 为 NSubstitute 中的每个 Returns() 返回一个新对象

javascript - 如何在html中使用ajax方法从 Node 服务器获取响应

javascript - 由于 webpack import outport,Vuejs eventbus 触发多次?

javascript - 对HTML5 Youtube视频的3D转换

javascript - 如何找到两个相同的行并删除它们? (不只是一个重复的!)

javascript - 如何通知 AngularJS Jquery 插件所做的更改?

javascript - RequireJS 中的绝对库依赖

AngularJS v1.3.x 电子邮件验证问题