javascript - QUnit 模拟自动完成

标签 javascript jquery-ui unit-testing qunit

在我的 QUnit 测试中,我想模拟自动完成方法(jQuery UI),但每次我运行测试时:

test("Create_PassedContainer_RunsAutocompleteOnMatchingElement",function(){
    var $matchingInput = $('<input data-autocomplete-url="some"/>');
    var $dom = $('<div><input/></div>');
    $dom.append($matchingInput);
    var autocompleteWasCalled = false;
    $matchingInput.autocomplete = function(){ autocompleteWasCalled = true; };

    new Autocomplete($dom);

    ok(autocompleteWasCalled,"Should call autocomplete.");
});

我得到结果:

TypeError: Object [object Object] has no method 'autocomplete'.

测试中的代码:

function Autocomplete($container) {
    var $self = this;

    this.Initialize = function($container) {
        $self.$container = $container;
        $self.$text = $('*[data-autocomplete-url]', $container);
        $self.$value = $('input[type="hidden"]', $container);

        $self.$text.autocomplete();
    };

    $self.Initialize($container);
};

任何事情都会有帮助。

最佳答案

自动完成是一个插件,试试这个:

var oldAutocomplete = $.fn.extend(true, {}, $.autocomplete);
$.autocomplete = function(){
    autocompleteWasCalled = true;
}

/// Other code...

$.fn.autocomplete = oldAutocomplete;

关于javascript - QUnit 模拟自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028669/

相关文章:

javascript - 在 wordpress 鼠标悬停时更改 Logo

javascript - 当用户点击播放视频时使计时器停止

javascript - 在 ng-repeat 中绑定(bind)来自不同请求的数据

jquery - 自定义 jQuery-UI Accordion

node.js - 模拟静态方法 es6 类进行测试

javascript - Backbone 获取请求是 OPTIONS 方法

javascript - jQuery:需要 "refresh"一个小部件

javascript - jQueryUI 的 blockUI 阻塞不当

node.js - 如何访问和测试 node.js 模块中的内部(非导出)函数?

unit-testing - 你如何对 Python DataFrames 进行单元测试