草庐IT

javascript - javascript getter 的 Jasmine 测试不起作用

我正在为angularjs工厂编写一些测试,但有些期望不起作用,我真的不知道为什么。这是我的工厂(其中的一部分)。'使用严格';angular.module('myAppMod').factory('Person',function(BaseModel){returnBaseModel.extend({getfullname(){varname=[];if(this.first_name){name.push(this.first_name);}if(this.person_extra&&this.person_extra.middle_name){name.push(this.per

javascript - 揭示模块模式 - 使用 Jasmine 进行单元测试

在与揭示性模块模式短暂接触后,我开始意识到单元测试模块的挫折。但是,我无法确定这是否是我测试模块的方法,或者是否有某种形式的解决方法。考虑以下代码:varmyWonderfulModule=(function(){functionpublicMethodA(condition){if(condition==='b'){publicMethodB();}}functionpublicMethodB(){//...}return{methodA:publicMethodA,methodB:publicMethodB}}());如果我想测试(使用Jasmine)从publicMethodA到

javascript - 如何使用 Jasmine 在 AngularJS 中测试 .catch Promise 返回?

我是Javascript的新手,刚开始学习AngularJS,但我的大部分测试用例都与我发现的一些很好的示例一起使用。不幸的是,我似乎找不到任何可以帮助我测试当前案例的东西。我正在使用一个模拟服务测试一个Controller,该服务的方法返回一个promise。我希望模拟服务返回一个错误,以便在Controller方法中执行“.catch”block。我可以通过几种方式判断它没有被正确调用:我正在使用istanbul用于代码覆盖,它告诉我我没有覆盖“catch”'.catch'block中的代码没有被执行,据我通过调试得知被测Controller,具体需要测试$scope.login中

javascript - Protractor Jasmine 描述嵌套在 it block 中的 block

首先,下面的代码似乎可以工作。但是,我还没有看到有人这样做,所以我想知道这是否合法,以及我是否遗漏了无法预料的缺点。上下文是我正在使用Protractor编写E2E测试,它使用Jasmine风格的describe/itblock。我的目标是加载一个页面并运行一堆it测试block,而不是每次都重新加载该页面(因为它很耗时)。我的构造是:describe("Homepage",function(){beforeEach(function(){browser.get("/");//loadsthepage});it('elements',function(){describe('testg

javascript - 如何使用jasmine测试一个需要很长时间才能响应的异步函数?

我正在使用一个函数从webapi获取数据。基本上使用$.ajax。我现在用waits()像这样测试它:describe('xxxxxxxxxxxxxxxxxxxxx',function(){varr;it('fetchFilter',function(){runs(function(){model.fetch(opts).done(function(data){r=data;});});waits(2000);runs(function(){expect(r[0].gender).toBeDefined();});});});问题是:不能保证waits(2000)会很好地完成这项工作。

windows - Windows 命令行中的 Jasmine

如何使用Windows机器从命令行运行jasmine?我见过jasmine脚本在Linux中运行。我希望jasmine在命令行中独立运行,没有phantomjs或任何其他模拟服务器的javascript代码(我只需要jasmine,如果可能的话使用maven)。 最佳答案 我迷路了...假设问题是“我可以在默认的Windows安装上运行JavaScript,我可以用这种方式用Jasmine运行测试吗”?CScript/WScript将运行JavaScript,两者都是默认Windows安装的一部分(我相信启动W2K或WinXP)。您

javascript - 检测 Jasmine 测试何时完成

我正在运行jasmine像这样测试;jasmine.getEnv().addReporter(newjasmine.TrivialReporter());jasmine.getEnv().execute();我想使用JavaScript检测测试何时完成。我该怎么办? 最佳答案 作为@Xv。建议,添加一个记者将工作。你可以做一些简单的事情:jasmine.getEnv().addReporter({jasmineDone:function(){//thespecshavefinished!}});参见http://jasmine.gi

javascript - Jasmine 中的错误预期

我有以下有效的功能functionsum(){vartotal=0,num=0,numArgs=arguments.length;if(numArgs===0){thrownewError("ArgumentsExpected");}for(varc=0;cJasmine规范文件如下:describe("Firsttest;examplespecification",function(){it("shouldbeabletoadd1+2",function(){varadd=sum(1,2);expect(add).toEqual(3);});it("SecondTest;should

javascript - 使用 Jasmine 监视 Backbone.js 路由调用

在Backbone路由器上监听方法调用时遇到问题,以确保它在给定路由上调用正确的方法。测试摘录describe'Router',->beforeEach->@router=newApp.Router()Backbone.history.start()afterEach->Backbone.history.stop()describe'routes',->it'shouldbedefined',->expect(@router.routes).toBeDefined()describe'defaultroute',->it'shouldbedefined',->expect(@route

javascript - 你如何使用 Jasmine BDD 卡住/伪造时间

我的代码中有这样一行newDate().getFullYear();我需要它总是在同一年返回。有什么办法可以用Jasmine做到这一点吗?谢谢。 最佳答案 在JavaScript中,您可以简单地覆盖测试设置中的函数:Date.prototype.getFullYear=function(){return2012}你也可以使用jasminespy:spyOn(Date,'getFullYear').andReturn(2012)另一种方法是将日期插入到您要测试的函数中。顺便说一句。编写可测试代码的最佳方式。不要在你的函数中创建新的实例