如何对传递给JavaScript函数的匿名回调进行单元测试?

时间:2013-08-20 21:30:15

标签: javascript unit-testing

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

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

我如何对select函数进行单元测试,以断言当调用valueField时,使用正确的值更新?{/ p>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

通过执行此操作,您将保存对匿名函数的引用,以便稍后调用它。

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

此技术也可用于私有功能,例如,使用module pattern时。