TOGOUTECH

javascript - 为什么将属性添加到对象文字的原型(prototype)会更改其 "type"?

所以我有一个简单的isPlainObject方法用于测试JavaScript对象字面量:varisPlainObject=function(obj){returntypeofobj==="object"&&{}.toString.call(obj)==="[objectObject]";};现在我有一个简单的对象:varobj={'one':1,'two':2,'three':3};当我通过isPlainObject(obj)函数运行它时,它按预期工作并返回true。我的问题来自向对象的原型

javascript - QUnit 不会运行测试

我刚开始使用QUnit时遇到了问题。我目前正在使用TypeScript,它是一个JavaScript编译器。我在与主类结构平行的类中进行测试。在每个类中,我都有一个名为runTests()的函数。为了执行这些测试,我遍历并获取所有以“Test”结尾的类,然后调用它们的runTests()函数。runTests()函数的一个示例是:runTests=function(){QUnit.test("5=5",function(){QUnit.ok(5==5,"okay");});}我知道所有的runTests()工作(因为它们被调用,因为控制台输出而被确认),

javascript - 如何使用 sinon.js 对回调函数的内容进行单元测试

如何使用sinon.js模拟框架在回调函数中测试代码?JSFiddle:http://jsfiddle.net/ruslans/CE5e2/varservice=function(){return{getData:function(callback){returncallback([1,2,3,4,5]);}}};varmodel=function(svc){return{data:[],init:function(){varself=this;svc.getData(function(serviceData){self.data=serviceData;//***testthisli

javascript - 在测试使用 qunit 显示的方法时避免/捕获/验证 Javascript 警报

我刚开始使用Qunit,想知道是否有办法捕获/验证/忽略警报,例如:functionto_test(){alert("I'mdisplayinganalert");return42;}然后有类似的东西:test("to_test",function(){//inthiscaseI'dliketotestthealert.alerts("I'mdisplayinganalert",to_test(),"to_test()shoulddisplayanalert");equals(42,to_test(

javascript - 使用 Qunit 检查图像是否正确加载

我正在尝试通过将URL设置为测试图像的src属性并检查error事件处理程序是否顺利。到目前为止,我所拥有的是:test('image',function(){vartest_image=$('#test-image');test_image.error(function(e){//properlytriggeredconsole.log(e);is_valid=false;//ok(false,'Issueloadingimage');breaksqunit});varis_valid=true;test_image.attr('

javascript - QUnit 奇怪的夹具行为,测试交替失败和通过

我在QUnit中设置了以下内容:/*Dozenorsoprevioustestshere*/test("Testsomemarkupgeneration",function(){$('#qunit-fixture').plugin();//jQueryplugin:Generatesatablevarrows=$('#qunit-fixturetabletbodytr');count=rows.length;//Counttherowsconsole.log(count);equal(count,"96","Exp

javascript - 如何使用新的断言函数扩展 QUnit?

我想向QUnit添加新断言。我做了这样的事情:QUnit.extend(QUnit.assert,{increases:function(measure,block,message){varbefore=measure();block();varafter=measure();varpasses=before<after;QUnit.push(passes,after,"<"+before,message);}});当我在测试中使用increases(foo,bar,baz)时,我得到了ReferenceError:increasesisnotdefined

javascript - sinon.stub() vs sinon.sandbox.stub()?

在我们的前端单元测试中使用sinon和sinon-qunit,我很难理解这些方法的区别。我们正在使用sinon.sandbox.stub()(字面意思是函数,我们不创建沙箱)并且这些stub显然会在每次测试后自动恢复。我只是在文档中的任何地方都看不到这一点。我不认为存在这种方法,我认为您需要使用sinon.sandbox.create()显式创建沙箱。在该沙箱对象上,您将调用stub函数,即mySandbox.stub(),而不是"sinon.sandbox.stub()"。谁能帮我理解一下? 最佳答案 stub-Sinon.JSs

javascript - headless (headless) JavaScript 测试 HTML5 音频/视频

我知道还有很多其他类似的问题,但是答案并没有提供解决这个问题的方法。我的网站上使用了一个使用HTML5网络音频的JavaScript文件,我想对其进行单元测试。我研究过将QUnit与PhantomJS结合使用,在你说什么之前我知道Phantom不支持它(http://phantomjs.org/supported-web-standards.html),但是我想知道是否有办法解决这个问题?在浏览器中使用QUnit测试它会像您预期的那样工作,但我不想每次都使用浏览器测试它,我希望它在服务器上自动进行。其中一个测试失败的示例:QUnit.test("isPlaying",f

javascript - QUnit 测试在 Travis CI 上失败(在带有 grunt.js 的 phantomjs 上运行)

我们在JavaScript上的开源项目enchant.js中引入了带有travisCI的CI系统。https://github.com/wise9/enchant.js我们喜欢qunit测试,我们使用grunt.js(npm)运行它们,但它在TravisCI上失败并出现如下错误:<WARN>PhantomJStimedout,possiblyduetoamissingQUnitstart()call.Use--forcetocontinue.</WARN>完整的错误信息在这里:https://travis-ci.org/wise9/enchant.js/buil