草庐IT

javascript - 使用 Jasmine 在 JavaScript 中插入 WebSocket

我尝试测试onmessage是否是一个正确的函数。这是一个测试:describe(".init(address,window)",function(){beforeEach(function(){address='ws://test.address';window={};e={data:{}}spyOn(window,'WebSocket').and.returnValue(function(){return{onmessage:null}});spyOn(subject,'handleMessage');});it("shouldcreateaWebSocketclientwhich

javascript - 如何为包含来自另一个类/文件的全局变量的方法编写 Jasmine 测试?

我的测试失败的原因如下:ReferenceError:Can'tfindvariable:moving_canvas_contextinfile(line5)我了解测试失败的原因。它不理解该变量,因为它是在单独的JavaScript文件中定义的。但是,它是全局声明的并且在现实中有效。如何为这个clear_canvas函数编写jasmine测试?JavaScriptCanvas_Actions:(function(){window.Canvas_Actions=(function(){functionCanvas_Actions(){}Canvas_Actions.prototype.c

javascript - 如何通过 Jasmine spy 将被拒绝/失败的 promise 返回到单元测试中的 Angular Controller

我正在使用jasmine来测试我的AngularController。我在.then(successCallback,errorCallback)中捕获错误和成功虽然它在实时功能的基础上运行良好,但我很困惑如何编写一个spy来返回错误,因为它总是在successCallback()中被捕获以下是Controller:-angular.module('myApp').controller('LoginCtrl',function($scope,$location,loginService,SessionService){$scope.errorMessage='';$scope.logi

javascript - jasmine.clock().tick() 不适用于 $timeout 和 debounce,但适用于 setTimeout

下面我有3个功能完全相同。每种调用setTimeout的方式不同,delay1()直接使用setTimeout,delay2()使用angularjs$timeout和delay3()使用lodashdebounce。它们都工作正常。问题出现在我用Jasmine测试的时候。setTimeout可以与jasmine.clock().tick()方法配合使用,但$timeout和debounce不适用't我有兴趣使用Jasmine进行去抖动。我知道我可以将$timeout.flush()与angularjs一起使用,但是$timeout和setTimeout在我使用的代码的其他地方给我带来

javascript - 将 $stateParams 和 $state 注入(inject) Jasmine Angular js 测试变得未定义

我正在为我的DetailCtrl编写jasmine测试。我有10个json文件,每个文件的文件名都是这样1.json2.json3.json在我的数据文件夹中这是我的详细控制backpagecontrollers.controller('DetailCtrl',function($scope,$stateParams,$http){$http.get('data/'+$stateParams.listingId+'.json').success(function(data){$scope.extrainfo=data;});});细节Controller正在从我的数据文件夹中获取每个1

javascript - 测试 CSS :hover with Jasmine

所以我有一个简单的div,当鼠标悬停时会根据我的css中的定义更改其背景:.my-class{background-color:#FFFFFF;}.my-class:hover{background-color:#F2F2F2;}我尝试用jasmine测试这种行为,但测试一直失败:it"Shadows.soboo-drop-itemwhenhover",->$('.my-class:first').trigger('mouseover')expect($('.my-class:first').css('background-color')).toBe("#F2F2F2")Expecte

javascript - Jasmine 模拟 ajax 调用在 IE 中不起作用

我尝试编写一个允许模拟Ajax调用的规范。该测试用例在Chrome和Firefox等浏览器上运行良好。但是当我在IE(版本9,10)上运行测试用例时,我遇到了一些问题。当使用jQueryAjax进行正常的Ajax调用时会出现此问题。我在IE中得到如下错误:TypeError:Unabletogetvalueoftheproperty'response':objectisnullorundefined.我写的测试用例如下describe("mockingajax",function(){beforeEach(function(){jasmine.Ajax.install();});aft

javascript - 尝试使用 jasmine 和 angular 时出错

当我尝试使用$httpBackend.flush();时出现错误TypeError:$browser.cookiesisnotafunction.我找不到有关此类错误和任何解决方案的任何信息。describe("someText",function(){var$httpBackend;varsomeManager;varauthRequestHandler;vardataMockup=[];beforeEach(function(){module('app');inject(function($injector){$httpBackend=$injector.get('$httpBac

javascript - D3.js - 以编程方式在 Jasmine 中生成拖动事件

我有一个使用D3和Angular编写的折线图组件。它具有用于更改x轴比例的可拖动条。现在我正在尝试使用Karma/Jasmine测试组件。我在单元测试中无法触发拖动事件。鼠标悬停和单击等其他事件也可以正常触发。我认为这是导致问题的d3中“拖动”事件的综合实现。这是我用来触发拖动的代码(此类代码在测试html页面上触发正确的d3拖动事件,但在单元测试中失败)。varleftBar=element.find(".left-bar")[0];varevObjStart=document.createEvent("MouseEvents");evObjStart.initMouseEvent(

javascript - 禁用 Jasmine 期望,例如 xdescribe 或 xit?

关于Jasminewebsite我看到我们可以通过xdescribe禁用套件或xit的个人规范.有没有办法只禁用一个期望(比如xexpect)?我问这个问题的原因是因为我正在使用Protractor编写e2e测试并且在我们的持续集成中我们还没有(如果有的话)访问数据库,尽管我们可以在本地运行真正的端到端例如,通过访问数据库进行测试。我想根据配置或环境变量将个人期望标记为可选。最好进行一次切换,然后围绕expect创建一个包装器,只有当我们在本地运行测试(可以访问数据库)时才会失败。例如,我可以创建一个新的规范系列:if(process.env.DB_AVAILABLE){dbit=it