我在模拟成功条件时没有遇到任何问题,但似乎无法理解在使用Sinon和Qunit进行测试时如何模拟失败/超时条件和ajax函数:我的设置是这样的:$(document).ready(function(){module("myTests",{setup:function(){xhr=sinon.sandbox.useFakeXMLHttpRequest();xhr.requests=[];xhr.onCreate=function(request){xhr.requests.push(request);};myObj=newMyObj("#elemSelector");},teardown
我正准备使用Qunit为Backbone应用程序编写一些测试,该应用程序是为ES6编写的,应用了babel.js,以便它可以在现代浏览器中运行。为了确保我正确设置了qunit并正确指定了所有路径,我首先测试了一个用ES5编写的Backbone模型,一切都按预期工作。但是,我随后将bundle.js(其中包含应用了babel.js的ES6代码的结果)包含到我的tests/index.html中,并编写了test("Codetransformedbybabel.jscontainedinbundle.jscanbetested",function(){expect(1);vares6mod
我正在尝试使用requirejs和grunt-contrib-qunit设置QUnit环境。这是我的。咕噜文件:qunit:{all:{options:{urls:['http://localhost:8000/qunit/qunit-test-suite.html']}}},connect:{server:{options:{port:8000,base:'.'}}},qunit-test-suite.html:QUnitTestsSuite:travisCITestQUnit.config.autoload=false;QUnit.config.autostart=false;qu
我有两个测试相互造成副作用。我理解为什么我要替换在第二个测试中内部调用的jQuery内置函数。然而,我不明白的是为什么测试交替通过和失败。Thisquestionissimilar但是,我没有直接在qunit-fixturediv上做任何事情。这是我的测试test('alwayspassingtest',function(){//AlwayspassesvarpanelId='#PanelMyTab';varevent={};varui={tab:{name:'MyTab',},panel:panelId,};$('').append('Test').append('ShowForm'
我是qunit的新手,正在尝试将它与现有环境集成。我在使用jQuery的页面上遇到的问题之一是:globalfailure(1,0,1)Rerun6msUncaughtReferenceError:$isnotdefined我认为这是因为我没有在qunitHTML中调用jquery库。是否可以设置一个参数来忽略这样的全局变量?我试图使HTML尽可能灵活,并且由于许多编辑器具有不同的依赖关系,我只希望qunit测试我专门给它测试的功能。 最佳答案 我遇到了同样的错误,但是没有使用jQuery。QUnit负责传播错误的部分是window
我最近开始使用QUnit对我的JavaScript进行单元测试,我对文档中的一个特性感到有点困惑:expect()。根据文档,expect()旨在:[s]pecifyhowmanyassertionsareexpectedtorunwithinatest.这是他们给出的例子:test("atest",function(){expect(2);functioncalc(x,operation){returnoperation(x);}varresult=calc(2,function(x){ok(true,"calc()callsoperationfunction");returnx*x
我是Qunit和单元测试的新手。我正在尝试找出测试以下功能的内容和方法。目前它并没有做太多事情,但我想断言,如果我传递给它不正确的值,就会抛出错误:functionattrToggle(panel,attr){'usestrict';if(!panel){thrownewError('Panelisnotdefined');}if(!attr){thrownewError('Attrisnotdefined');}if(typeofpanel!=='string'){thrownewError('Panelisnotastring');}if(typeofattr!=='string'
我已经搜索过了,看来这个错误是由于没有正确使用asyncTest造成的。但是,根据文档,我似乎做对了。我猜我在某处遗漏了一个小细节,需要一双额外的眼睛……我正在尝试测试一些代码,这些代码发出ajax请求以获取页面,然后将其加载到灯箱中。lightbox-content在ajax调用完成并可以显示之前不会显示在DOM中。因此,我只能在我的onComplete回调中检查它,这是我进行测试以查看它是否正确加载的地方。这是我的代码:asyncTest('mytest',1,function(){utils.lightbox.show('/login',{onComplete:function(
正如我多次看到的那样,一个自执行的匿名函数用于包含整个库。如何测试这些库,例如QUnit无法访问匿名函数包装器内的任何内容? 最佳答案 我同意你不想执行BackdoorManipulation通过寻找偷偷摸摸的方法来离散地测试私有(private)方法。但是,正如您所指出的,无数的Web应用程序被编写成一个巨大的自执行泥球,缺乏任何命名或公共(public)API。这是一个完全不同的问题,在许多其他技术堆栈中不太可能遇到。TDD为网络编写JavaScript的巨大值(value)之一是它迫使您编写至少可供两方使用的JavaScrip
我正在使用qUnit测试一些JavaScript。在一个对象中,我传递了一个DOM元素,一些方法将更改该元素的一些属性。如何在qUnit中模拟DOM对象?我想使用独立于浏览器的解决方案,因为我也测试XUL应用程序。 最佳答案 您始终可以在JavaScript中创建元素。如果您不附加它(例如附加到正文),它将不可见,因此您可以将其称为模拟元素:document.createElement('div');//'div'willcreatea''因此您也可以在qUnit测试函数中使用它:http://jsfiddle.net/LeMFH/