Questions tagged «jasmine»

Jasmine是一个行为驱动的开发(BDD)框架,用于测试JavaScript代码。Jasmine没有外部依赖关系,并且不需要DOM。

3
我如何阅读伊斯坦布尔报道报告?
我一直使用Jasmine进行单元测试,但是最近我开始使用Istanbul给我代码覆盖率报告。我的意思是我得到的要点是什么,他们是想告诉我,但我真的不知道这些百分比代表(撑条,树枝,funcs中,线)。到目前为止,谷歌搜索我一直找不到可靠的解释/资源。 问题:就像我说的那样,它的要旨是什么,但是有人可以发布正确的解释或指向正确解释的链接吗? 第三级问题:有什么方法可以确定代码的哪些特定部分未被涵盖?到目前为止,我基本上没有猜测这个报告。 -------------------|-----------|-----------|-----------|-----------| File | % Stmts |% Branches | % Funcs | % Lines | -------------------|-----------|-----------|-----------|-----------| controllers/ | 88.1 | 77.78 | 78.57 | 88.1 | dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 | -------------------|-----------|-----------|-----------|-----------| All files | 88.1 | 77.78 | 78.57 | 88.1 | …

3
反应酶找到第二(或第n)节点
我正在用Jasmine Enzyme浅层渲染测试React组件。 为了这个问题的目的在这里简化了... function MyOuterComponent() { return ( <div> ... <MyInnerComponent title="Hello" /> ... <MyInnerComponent title="Good-bye" /> ... </div> ) } MyOuterComponent有2个实例,MyInnerComponent我想在每个实例上测试道具。 第一个我知道如何测试。我用find用first... expect(component.find('MyInnerComponent').first()).toHaveProp('title', 'Hello'); 但是,我正在努力测试的第二个实例MyInnerComponent。 我希望像这样的事情可以工作... expect(component.find('MyInnerComponent').second()).toHaveProp('title', 'Good-bye'); 甚至这个... expect(component.find('MyInnerComponent')[1]).toHaveProp('title', 'Good-bye'); 但是,上述两种工作当然都没有。 我觉得我想念显而易见的东西。 但是,当我浏览文档时,没有看到类似的示例。 任何人?
128 reactjs  jasmine  enzyme 

12
使用templateUrl进行单元测试AngularJS指令
我有一个已templateUrl定义的AngularJS指令。我正在尝试与Jasmine进行单元测试。 根据此建议,我的Jasmine JavaScript如下所示: describe('module: my.module', function () { beforeEach(module('my.module')); describe('my-directive directive', function () { var scope, $compile; beforeEach(inject(function (_$rootScope_, _$compile_, $injector) { scope = _$rootScope_; $compile = _$compile_; $httpBackend = $injector.get('$httpBackend'); $httpBackend.whenGET('path/to/template.html').passThrough(); })); describe('test', function () { var element; beforeEach(function () { element = $compile( '<my-directive></my-directive>')(scope); angular.element(document.body).append(element); }); afterEach(function () …


6
如何使用Jasmine验证jQuery AJAX事件?
我正在尝试使用Jasmine为基本的jQuery AJAX请求编写一些BDD规范。我目前在独立模式下(即通过SpecRunner.html)使用Jasmine 。我已将SpecRunner配置为加载jquery和其他.js文件。有什么想法为什么以下无效?has_returned不会变为真的,甚至以为“ yuppi!” 警报显示正常。 describe("A jQuery ajax request should be able to fetch...", function() { it("an XML file from the filesystem", function() { $.ajax_get_xml_request = { has_returned : false }; // initiating the AJAX request $.ajax({ type: "GET", url: "addressbook_files/addressbookxml.xml", dataType: "xml", success: function(xml) { alert("yuppi!"); $.ajax_get_xml_request.has_returned = true; …
114 javascript  jquery  ajax  jasmine  bdd 

7
将模拟注入AngularJS服务
我写了一个AngularJS服务,我想对其进行单元测试。 angular.module('myServiceProvider', ['fooServiceProvider', 'barServiceProvider']). factory('myService', function ($http, fooService, barService) { this.something = function() { // Do something with the injected services }; return this; }); 我的app.js文件已注册: angular .module('myApp', ['fooServiceProvider','barServiceProvider','myServiceProvider'] ) 我可以测试DI是否像这样工作: describe("Using the DI framework", function() { beforeEach(module('fooServiceProvider')); beforeEach(module('barServiceProvider')); beforeEach(module('myServiceProvder')); var service; beforeEach(inject(function(fooService, barService, myService) { service=myService; })); it("can be …

1
QUnit与茉莉花?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7年前关闭。 改善这个问题 这两个测试框架之间的主要区别是什么? 从一开始,我就完全不熟悉测试驱动开发。

4
如何使用Jasmine测试AngularJS服务?
(这里有一个相关的问题:Jasmine测试没有看到AngularJS模块) 我只想在不引导Angular的情况下测试服务。 我看了一些例子和教程,但是我什么也不会去。 我只有三个文件: myService.js:在这里定义AngularJS服务 test_myService.js:在此处定义服务的Jasmine测试。 specRunner.html:一个具有常规茉莉花配置的HTML文件,在这里我导入了其他两个文件以及茉莉花,Angularjs和angular-mocks.js。 这是该服务的代码(在我未测试时可以正常工作): var myModule = angular.module('myModule', []); myModule.factory('myService', function(){ var serviceImplementation = {}; serviceImplementation.one = 1; serviceImplementation.two = 2; serviceImplementation.three = 3; return serviceImplementation }); 当我尝试单独测试服务时,我应该能够访问它并检查其方法。我的问题是:如何在不引导AngularJS的情况下在测试中注入服务? 例如,如何使用Jasmine测试服务方法返回的值,如下所示: describe('myService test', function(){ describe('when I call myService.one', function(){ it('returns 1', function(){ myModule = angular.module('myModule'); //something is missing …
107 angularjs  jasmine 


9
如何在Jasmine中测试值“大于或等于”?
我想确认一个值是一个十进制(或0),因此该数字应大于或等于零且小于1。 describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); 我如何模仿“> = 0”?



5
在Jasmine中检查对象相等
Jasmine具有内置的MatcherstoBe和toEqual。如果我有这样的对象: function Money(amount, currency){ this.amount = amount; this.currency = currency; this.sum = function (money){ return new Money(200, "USD"); } } 并尝试与new Money(200, "USD")和的结果进行比较,这些内置匹配器将无法按预期工作。我已经设法实现了基于自定义equals方法和自定义匹配器的变通方法,但这似乎需要很多工作。 在Jasmine中比较对象的标准方法是什么?

1
如何测试未调用函数?
我正在测试路由器,并且具有两个功能,并且我需要测试是否调用了第一个功能,是否未调用第二个功能。有方法toHaveBeenCalled但没有方法可以测试是否未调用函数。我该如何测试? 我有这样的代码: var args, controller, router; beforeEach(function() { controller = { foo: function(name, id) { args = [].slice.call(arguments); }, bar: function(name) { } }; spyOn(controller, "foo").and.callThrough(); spyOn(controller, "bar").and.callThrough(); router = new route(); router.match('/foo/bar/{{id}}--{{name}}', controller.foo); router.match('/foo/baz/{{id}}--{{name}}', controller.bar); router.exec('/foo/bar/10--hello'); }); it('foo route shuld be called', function() { expect(controller.foo).toHaveBeenCalled(); }); it('bar route shoud …

4
如何在AngularJS中对隔离范围指令进行单元测试
在AngularJS中对隔离范围进行单元测试的好方法是什么 JSFiddle显示单元测试 指令段 scope: {name: '=myGreet'}, link: function (scope, element, attrs) { //show the initial state greet(element, scope[attrs.myGreet]); //listen for changes in the model scope.$watch(attrs.myGreet, function (name) { greet(element, name); }); } 我想,以确保指令监听的变化-这确实不是工作,一个孤立的范围: it('should watch for changes in the model', function () { var elm; //arrange spyOn(scope, '$watch'); //act elm …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.