Tag: jasmine

我将如何testingJasmine中的$ scope.watch(AngularJS)更改?

我刚刚开始写AngularJS的东西,我不知道如何去写这个特定的东西testing。 我正在构build具有不同状态的“帮助请求”模式。 所以在我的控制器中,我使用$ scope.request_modevariables。 激活帮助请求的不同链接将该variables设置为不同的内容。 然后在我的指令里面,我做了$scope.$watch('request_mode', function(){…}); 以在请求模式改变时select性地激活或停用事物。 代码都很好,但是我遇到的问题是testing。 我似乎无法让Jasmine拿起$scope.$watch ,实际上当它发生变化时会触发任何东西。 我敢肯定有人遇到过这个,所以任何build议将非常感激。

angularjs路由unit testing

正如我们在http://docs.angularjs.org/tutorial/step_07中看到的, angular.module('phonecat', []). config(['$routeProvider', function($routeProvider) { $routeProvider. when('/phones', {templateUrl: 'partials/phone-list.html', controller: PhoneListCtrl}). when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}). otherwise({redirectTo: '/phones'}); }]); build议使用e2etesting进行路由testing, it('should redirect index.html to index.html#/phones', function() { browser().navigateTo('../../app/index.html'); expect(browser().location().url()).toBe('/phones'); }); 不过,我认为'$ routeProvider'configuration是使用单个函数($ routeProvider)完成的,我们应该能够在不涉及浏览器的情况下进行unit testing,因为我认为路由function不需要浏览器DOM。 例如, 当url是/ foo时,templateUrl必须是/partials/foo.html而控制器是FooCtrl 当url是/ bar时,templateUrl必须是/partials/bar.html,而控制器是BarCtrl 这是一个简单的IMO函数,它也应该在一个简单的testing中进行testing,一个unit testing。 我googlesearch这个$ routeProviderunit testing,但没有运气。 我想我可以从这里借用一些代码,但不能做到这一点, https://github.com/angular/angular.js/blob/master/test/ng/routeSpec.js 。

在Jasminetesting中将调用redirect到console.log()以标准输出

我通过jasmine-maven-plugin使用Jasmine,我想在Maven构build输出中看到console.log()消息。 有没有办法做到这一点? 如果console.log()不能被redirect,还有没有其他方法可以从我的testing中logging下来,以便它们显示在Maven构build输出中? 我正以无头的方式在Jenkins上运行这些testing,并希望能够从testing中获得一些debugging输出。

如何正确使用Jasmine和/或Sinonunit testingjQuery的.ajax()承诺?

我有一个相当简单的函数,它返回一个jQuery .ajax()承诺如此: CLAW.controls.validateLocation = function(val, $inputEl) { return $.ajax({ url: locationServiceUrl + 'ValidateLocation/', data: { 'locationName': val }, beforeSend: function() { $inputEl.addClass('busy'); } }).done(function(result) { // some success clauses }).fail(function(result) { // some failure clauses }).always(function() { // some always clauses }); } 在大多数情况下,这个新的承诺接口像梦一样工作,并消除使用jQuery的.ajax()的callback金字塔是伟大的。 然而,我不能为了我的生活弄清楚如何用Jasmine和/或Sinon来正确地testing这些承诺: Sinon的所有文档都假设你正在使用旧式的callback, 我没有看到一个如何与promise / deferreds一起使用的例子 当试图用Jasmine或Sinon间谍来监视$ .ajax时,间谍正在有效地覆盖承诺,所以它的done , fail和always子句不再存在于ajax函数中,所以承诺永远不会解决和抛出一个错误代替 我真的只是喜欢一个或两个如何testing这些新的jQuery .ajax()承诺与上述testing库。 […]

如何在AngularJS 1.x中unit testing一个filter

你如何在Angular中testing一个filter?

在AngularJStesting中,_servicename_中的下划线是什么意思?

在下面的示例testing中,原始的提供者名称是APIEndpointProvider,但是对于注入和服务实例化,约定似乎是必须使用包装它的下划线注入。 这是为什么? 'use strict'; describe('Provider: APIEndpointProvider', function () { beforeEach(module('myApp.providers')); var APIEndpointProvider; beforeEach(inject(function(_APIEndpointProvider_) { APIEndpointProvider = _APIEndpointProvider_; })); it('should do something', function () { expect(!!APIEndpointProvider).toBe(true); }); }); 什么是约会我错过了一个更好的解释?

我如何testingangular度的事件?

我需要testing事件得到正确发射或广播,并手动触发事件。 什么是最好的方法来做到这一点?

如何用JasminevalidationjQuery AJAX事件?

我正在尝试使用Jasmine为基本的jQuery AJAX请求编写一些BDD规范。 我目前在独立模式(即通过SpecRunner.html )使用茉莉花。 我configuration了SpecRunner来加载jQuery和其他.js文件。 任何想法为什么以下不起作用? 回复不成真,甚至认为“雅皮”! 警报显示正常。 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; } }); […]

使用templateUrl进行unit testingAngularJS指令

我有一个定义了templateUrl的AngularJS指令。 我正在用Jasmine进行unit testing。 我的茉莉花JavaScript看起来像下面,根据这个build议: 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 () { element.remove(); }); it('test', […]