我正在使用最新版本的grunt,qunit以及以下测试:
module('jQuery#FilteringTool', {
setup: function() {
this.elems = $('#qunit-fixture').children();
$(this.elems).FilteringTool();
}
});
asyncTest('load remote content', function(){
var $this = this;
window.setTimeout( function(){
ok( $('#qunit-fixture .carouselItem').length > 0, "items are in place" );
start();
}, 50 );
});
插件FilterinTool
工作正常,在浏览器中运行测试工作正常,但运行测试whithin grunt将失败。我是TDD世界的新手,我不明白我到底做错了什么?
经过测试的代码如下:
(function( $, document ){
var FilteringTool = {
init: function( el, o ){
var $this = this;
$this.el = $( el );
$this.ajaxUrl = $(el).data('ajax-url');
$this.loadItems();
} // init
,loadItems: function(params){
var $this = this;
$.getJSON( $this.ajaxUrl, $.proxy( $this.populateFields, $this ) );
}//loadItems
,populateFields: function( data ){
var $this = this;
$('.filtered-items', $this.el).append( data.html );
}//populateFields
};
$.fn.FilteringTool = function() {
return this.each(function(){
var obj = Object.create( FilteringTool );
obj.init( this );
});
};
})( jQuery, document );
和灯具:
<div id="qunit-fixture">
<div class="carouselWrapper loading" data-ajax-url="../../../fixtures/wines-carousel.ajax.php">
<div class="carousel">
<div class="filtered-items"></div>
</div><!-- /.carousel -->
</div><!-- /.carouselWrapper -->
</div>
答案 0 :(得分:0)
问题是我试图从本地加载一个php文件。我笨:)
修复了data-ajax-url
的完整网址。
答案 1 :(得分:0)
我遇到了使用jQuery运行的类似问题。当我在浏览器中查看我的测试页面时,我没有收到任何错误,jQuery加载正常,并用于测试代码和测试。
当通过Grunt / PhantomJS运行时,我收到一条错误,指出找不到jQuery。