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

如何对传递给JavaScript函数的匿名回调进行单元测试?,javascript,unit-testing,Javascript,Unit Testing,我正在创建一个传递回调函数的jQuery UI自动完成小部件,如下所示: input.autocomplete( { ..., select: function ( event, ui ) { valueField.val( ui.item.id ); }, ... } ); 如何对select函数进行单元测试,以断言调用该函数时,值字段会使用正确的值进行更新?使用可以捕获传递到自动完成函数的参数,例如: var params; when( in

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

input.autocomplete( {
    ...,
    select: function ( event, ui ) {
        valueField.val( ui.item.id );
    },
    ...
} );
如何对
select
函数进行单元测试,以断言调用该函数时,
值字段
会使用正确的值进行更新?

使用可以捕获传递到
自动完成
函数的参数,例如:

var params;
when( input ).autocomplete().then( function ( p ) {
    params = p;
} );
这样做可以保存对匿名函数的引用,以便以后可以调用它

params.select( null, { item: { id: someId } } );
verify( valueField ).val( someId );
此技术也可用于私有函数,例如,当使用时。

使用您可以捕获传递到
自动完成
函数的参数,例如:

var params;
when( input ).autocomplete().then( function ( p ) {
    params = p;
} );
这样做可以保存对匿名函数的引用,以便以后可以调用它

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

此技术也可用于私有函数,例如,在使用时。

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

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

这是可行的,但是这样你就失去了私有或匿名函数的优势。你可以决定哪一个对你来说更重要。这是可行的,但是你失去了私有函数或匿名函数的优势。这是真的。你可以决定哪个对你更重要。