我需要重构我正在开发的wordpress插件的整个javascript代码库,这样我就可以在上面运行单元测试,我正在寻找一个开始的地方。我知道我需要开始使用MVC框架来正确地进行单元测试,我想要一个小小的“启动型”。假设我有一个非常基本的MVC调用,如何在jQuery框架中编写相同的代码,使其成为单元可测试的?
// Refreshes the multiselect with data from facebook.
$( '.ai1ec-facebook-refresh-multiselect' ).click( function( e ) {
e.preventDefault();
// Find the spinner and show it
$( this ).closest( '.ai1ec-facebook-multiselect-title-wrapper' )
.find( '.ajax-loading' )
.css( 'visibility', 'visible' );
var type = $( this ).closest( '.ai1ec-facebook-multiselect-container' ).data( 'type' );
var that = this;
var data = {
"action" : 'ai1ec_refresh_facebook_objects',
"ai1ec_type" : type
}
$.post(
ajaxurl,
data,
function( response ) {
$( that ).closest( '.ai1ec-facebook-multiselect-title-wrapper' )
.find( '.ajax-loading' )
.css( 'visibility', 'hidden' );
if ( response.errors === true ) {
var alert = AI1EC_UTILS.make_alert( response.error_messages.join( '<br/>'), 'error' );
$( '#alerts' ).append( $alert );
return;
}
$( ' .ai1ec-facebook-multiselect-container[data-type=' + type + '] .ai1ec-facebook-multiselect ').replaceWith( response.html );
var $ok_alert = AI1EC_UTILS.make_alert( response.message, 'success' );
$( '#alerts' ).append( $ok_alert );
},
'json'
);
} );
任何javascript MVC示例都将是完美的。
发布于 2012-05-29 19:48:17
使用MVC框架和拥有可测试的代码之间没有任何关联。
也没有理由认为基于非MVC框架的代码不能很好地进行测试。
完全有可能将所有这些代码移动到MVC实现中,并且测试结果就像这个一样乏味。
我在您向我们展示的示例代码中看到的问题是它缺乏模块化。我不是一个典型的宗教信徒,但也许我们可以在这里讨论一下单一责任。
我在这里推荐的是为所有的逻辑创建隔离的方法,组织它们,将它们放入一个Class或Utils模块中,然后您将看到在隔离和协作中测试它们是多么容易。
一旦你实现了这一点,你就可以转向MVC或者不转向MVC,但这仅仅是因为代码的可测试性不是一个原因。
https://stackoverflow.com/questions/10795384
复制相似问题