1

我正在创建一个传入回调函数的 jQuery UI 自动完成小部件,如下所示:

input.autocomplete( {
    ...,
    select: function ( event, ui ) {
        valueField.val( ui.item.id );
    },
    ...
} );

如何对select函数进行单元测试以断言在调用它时会valueField使用正确的值进行更新?

4

2 回答 2

1

如果您想对您的 javascript 进行单元测试,最好的计划是为您的回调创建一流的函数。

于 2013-08-20T21:37:07.913 回答
0

使用JsMockito您可以捕获传入autocomplete函数的参数,例如:

var params;
when( input ).autocomplete().then( function ( p ) {
    params = p;
} );

通过这样做,您将保存对匿名函数的引用,以便稍后调用它。

params.select( null, { item: { id: someId } } );
verify( valueField ).val( someId );

这种技术也可以用于私有函数,例如,在使用模块模式时。

于 2013-08-20T21:30:15.280 回答