Tag: 茉莉花

不再能够使用ddescribe或iit

我曾经能够使用ddescribe和iit让茉莉花/果报运行一个特定的testing或一组testing。 但是,现在它不再有效,我得到这个错误:(或类似的iit)。 INFO [karma]: Karma v0.12.31 server started at http://localhost:8081/ INFO [launcher]: Starting browser PhantomJS INFO [PhantomJS 1.9.8 (Windows 7)]: Connected on socket jIMgciNEN5VXBdZOhDz2 with id 78471739 PhantomJS 1.9.8 (Windows 7) ERROR ReferenceError: Can't find variable: ddescribe at /…/test.js:146 我正在运行:业力0.12.28,茉莉花2.2.0,业力 – 茉莉花:0.3.5,业力 – 幻影 – 发射器:0.1.4 以下是testing文件基本的样子: 'use strict'; ddescribe('MyController', function() { it('should do xyz', […]

AngularJS量angular器 – 使用Ng-Click绑定在页面上查找元素

我在页面上有一个button,如下所示: <button ng-click="myFunction()" ng-show="flag"> Submit </button> 元素没有ID。 有没有办法find这个元素使用绑定到Ng点击function? 还是我必须分配一个ID到这个元素来find它使用Jasmine /量angular器?

茉莉花模拟窗口对象

我如何模拟窗口对象? 我正在做Firefox的扩展,我想用茉莉花的JavaScripttesting。 在我的JavaScript我有 function submit() { … var url = window.arguments[0]; … } 很明显,我必须在茉莉花模拟window.arguments [0],因为如果不从window.openDialog传递任何参数,该对象不存在 这是我试图嘲笑它与“与” it("should submit to server", function() { var localContext = { "window": { arguments: ["http://localhost"] } } with(localContext); it("should submit to server", function() { var localContext = { "window": { arguments: ["http://localhost"] } } with(localContext); 但是我仍然得到这个错误TypeError:不能读取未定义的属性'0',就像当testing运行时window.arguments [0]被真正的窗口消灭,因为如果我 window.arguments[0] 在testing中,它正确地打印出“http:// localhost”。 […]

我如何阅读伊斯坦布尔报道?

我一直使用Jasmine进行unit testing,但最近我开始使用Istanbul来给我提供代码覆盖率报告。 我的意思是我明白了他们想要告诉我的要点 ,但是我不知道每个百分比代表什么(Stmts,Branches,Funcs,Lines)。 到目前为止谷歌search我一直无法find一个坚实的解释/资源。 问题 :就像我说的那样,我能得到它的要点,但是可以有人发布一个正确的解释或链接到一个正确的解释? 第三个问题 :有什么方法可以确定你的代码的哪些部分不被覆盖? 到目前为止没有真正grokking这个报告,我基本上猜测。 ——————-|———–|———–|———–|———–| 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 | […]

AngularJS $超时function不执行在我的茉莉花规格

我试图用茉莉花来testing我的AngularJS控制器,使用Karma。 但是在现实生活中运行良好的$timeout会使我的testing崩溃。 控制器: var Ctrl = function($scope, $timeout) { $scope.doStuff = function() { $timeout(function() { $scope.stuffDone = true; }, 250); }; }; 茉莉花块( $scope和控制器已被正确初始化): it('should do stuff', function() { runs(function() { $scope.doStuff(); }); waitsFor(function() { return $scope.stuffDone; }, 'Stuff should be done', 750); runs(function() { expect($scope.stuffDone).toBeTruthy(); }); }); 当我在浏览器中运行我的应用程序时,将执行$timeout函数, $scope.stuffDone将为true。 但是在我的testing中, $timeout什么也不做,函数永远不会执行,Jasmine会在超过750 ms后报错。 这里有什么可能是错的?

茉莉花testing没有看到AngularJS模块

我正在尝试用Jasmine spec文件unit testing一个Angular服务。 这要求加载一个模块。 这里是一个简单的规范,试图简单地加载Angular模块: describe('Submission services', function () { it('Finds angular', function () { module('submissionServices'); }); }); 当我运行Jasmine时,会导致以下错误 Running Jasmine specs… FAIL: 1 test, 1 failure, 0.004 secs. Submission services Finds angular. (/Users/XXX/Projects/globe_town/spec/javascripts/SubmissionsSpec.js:3) ReferenceError: Can't find variable: module Test ordering seed: –seed 1826 rake aborted! Jasmine::Headless::TestFailure jasmine.yml文件包含 src_files: – public/javascripts/jquery.js – spec/javascripts/lib/angular/angular.js – spec/javascripts/lib/angular/angular-resource.js […]

NPM不再工作

所以我没有注意并且运行这个命令, npm install npm install jasmine-node -g 这导致了这一点 – npm http GET https://registry.npmjs.org/install npm http GET https://registry.npmjs.org/jasmine-node npm http GET https://registry.npmjs.org/npm npm http 200 https://registry.npmjs.org/install npm http GET https://registry.npmjs.org/install/-/install-0.1.7.tgz npm http 200 https://registry.npmjs.org/install/-/install-0.1.7.tgz npm http 200 https://registry.npmjs.org/jasmine-node npm http GET https://registry.npmjs.org/jasmine-node/-/jasmine-node-1.4.0.tgz npm http 200 https://registry.npmjs.org/jasmine-node/-/jasmine-node-1.4.0.tgz npm http 200 https://registry.npmjs.org/npm npm http GET https://registry.npmjs.org/npm/-/npm-1.2.15.tgz npm http […]

angular2testing,我怎么模仿子组件

如何在茉莉花testing中模拟子组件? 我有MyComponent ,它使用MyNavbarComponent和MyToolbarComponent import {Component} from 'angular2/core'; import {MyNavbarComponent} from './my-navbar.component'; import {MyToolbarComponent} from './my-toolbar.component'; @Component({ selector: 'my-app', template: ` <my-toolbar></my-toolbar> {{foo}} <my-navbar></my-navbar> `, directives: [MyNavbarComponent, MyToolbarComponent] }) export class MyComponent {} 当我testing这个组件时,我不想加载和testing这两个子组件; MyNavbarComponent,MyToolbarComponent,所以我想嘲笑它。 我知道如何使用provide(MyService, useClass(…))来模拟服务,但我不知道如何模拟指令; 组件; beforeEach(() => { setBaseTestProviders( TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS ); //TODO: want to mock unnecessary directives for this component test // […]

如何在coffeescript的特定范围声明一个variables?

我正在尝试在使用beforeEach块的coffeescript中编写一个茉莉花testing。 这会导致coffeescriptvariables范围的问题。 这是我想要写的: describe 'PhoneDetailCtrl', () -> beforeEach () -> scope = angular.scope() $browser = scope.$service('$browser') it 'should fetch phone detail', () -> scope.params = {phoneId:'xyz'} $browser.xhr.expectGET('phones/xyz.json').respond({name:'phone xyz'}) ctrl = scope.$new(PhoneDetailCtrl) expect(ctrl.phone).toEqualData({}) $browser.xhr.flush() expect(ctrl.phone).toEqualData({name:'phone xyz'}) 但是,这不起作用,因为scope和$browser将在最内层的范围内声明var 。 也就是说,一旦在beforeEach ,然后又在it块中。 我可以通过初始化来强制variables在正确的范围内声明,但是这看起来很奇怪: describe 'PhoneDetailCtrl', () -> $browser = {} scope = {} beforeEach () -> scope = […]

jasmine:spyOn(obj,'method').CallFake or和.callFake?

我想在我的茉莉花testing中模拟testing数据。 这里有两个版本: // version 1: spyOn(mBankAccountResource, 'getBankAccountData').and.callFake(fakedFunction); // version 2: spyOn(mBankAccountResource, 'getBankAccountData').andCallFake(fakedFunction); 当我用浏览器(Chrome,Firefox)执行我的testing时,第一个版本可以正常工作。 但是,当我用phantomjs运行相同的testing时,我必须使用第二个版本。 否则,它会抱怨函数没有被定义。 这里是错误信息: // phantomjs (with version 1) TypeError: 'undefined' is not an object (evaluating 'spyOn(mBankAccountResource, 'getBankAccountData').and.callFake') at /home/phil/workspaces/world/basket.angular.ui/basket.angular.ui/test/bankaccount/BankAccountCtrlTest.js:65 at invoke (/home/phil/workspaces/world/basket.angular.ui/bower_components/angular/angular.js:3707) at workFn (/home/phil/workspaces/world/basket.angular.ui/bower_components/angular-mocks/angular-mocks.js:2149) undefined // Chrome (with version 2) TypeError: Object function () { callTracker.track({ object: this, args: Array.prototype.slice.apply(arguments) }); […]