Tag: 茉莉花

为什么$只在'angular.mock.module'函数中可用,$ q只在'angular.mock.inject'函数中可用?

我正在嘲笑一个AngularJSunit testing的服务。 我正在使用$provide服务来replace模拟出来的“真实”服务(这是一个可用的plunker脚本 ): describe('My Controller', function () { var $scope; var $provide; beforeEach(angular.mock.module('myApp')); beforeEach(angular.mock.module(function (_$provide_) { $provide = _$provide_; })); beforeEach(angular.mock.inject(function($rootScope, $controller, $q){ var mockMyService = { getAll : function() { var deferred = $q.defer(); deferred.resolve([ { itemText: "Foo" }, { itemText: "Bar" } ]); return deferred.promise; } }; $provide.value('myService', mockMyService); $scope = $rootScope.$new(); […]

模拟一个服务,以testing一个控制器

我有一个ParseService,我想嘲笑所有使用它的控制器,我一直在阅读有关茉莉花间谍,但它仍然不清楚。 有谁能给我一个如何模拟一个自定义服务的例子,并在Controllertesting中使用它吗? 现在我有一个控制器,使用服务来插入一本书: BookCrossingApp.controller('AddBookCtrl', function ($scope, DataService, $location) { $scope.registerNewBook = function (book) { DataService.registerBook(book, function (isResult, result) { $scope.$apply(function () { $scope.registerResult = isResult ? "Success" : result; }); if (isResult) { //$scope.registerResult = "Success"; $location.path('/main'); } else { $scope.registerResult = "Fail!"; //$location.path('/'); } }); }; }); 该服务是这样的: angular.module('DataServices', []) /** * Parse Service […]

如何在Jasmine间谍上多次调用不同的返回值

说我正在监视这样一个方法: spyOn(util, "foo").andReturn(true); 被testing的函数多次调用util.foo 。 第一次被调用的时候间谍是否可以返回true ,但第二次返回false ? 还是有不同的方式去呢?

将茉莉花testing结果输出到控制台

我在我的Firefox插件中使用Jasmine(JavaScript的BDDtesting框架)来testing我的代码的function。 问题是茉莉花正在输出testing结果到一个HTML文件,我需要的是萤火虫控制台或其他解决scheme输出结果。

在JasmineJStesting中不会触发AngularJS Promisecallback

问题介绍 我试图unit testing一个包装Facebook JavaScript SDK FB对象的AngularJS服务; 然而,testing不起作用,我还没有弄清楚为什么。 另外,当我在浏览器中运行服务代码,而不是使用Karmatesting运行器运行的JasmineJSunit testing时,服务代码就可以工作。 我正在通过$q对象testing一个使用Angular promise的asynchronous方法。 我设置了使用Jasmine 1.3.1asynchronoustesting方法asynchronous运行的testing ,但waitsFor()函数永远不会返回true (请参阅下面的testing代码),它在5秒后超时 。 (Karma不包含Jasmine 2.0asynchronoustestingAPI)。 我认为这可能是因为承诺的then()方法从来没有触发(我有一个console.log()设置来显示),即使我打电话给$scope.$apply()asynchronous方法返回,让Angular知道它应该运行一个摘要循环,并触发then()callback…但我可能是错的。 这是运行testing的错误输出: Chrome 32.0.1700 (Mac OS X 10.9.1) service Facebook should return false if user is not logged into Facebook FAILED timeout: timed out after 5000 msec waiting for something to happen Chrome 32.0.1700 (Mac OS X […]

如何从命令行在Node.js上运行Jasminetesting

如何从命令行上运行Node.js的Jasminetesting? 我通过npm安装了jasmine-node并编写了一些testing。 我想在spec目录下运行testing,并在terminal中得到结果,这可能吗?

如何在一个指令的链接函数中testing行为

在我的一些指令中,我将函数添加到作用域以处理指令的特定逻辑。 例如: link: function(scope, element, attrs) { scope.doStuff = function() { //do a bunch of stuff I want to test } } 我如何去testing这个function? 我search了一下如何testing一个指令,但是我发现的东西更多的是testing元素的变化。 我可以在每次testing之前编译我的指令,但每次都会消除我的范围。 我想testing作为我的范围更改中的属性函数。 有什么办法来获得从指令定义中返回的对象吗? 然后,我可以直接调用链接函数,并testing范围中定义的每个函数的行为。 有没有更好的方法来做到这一点? 我正在使用Jasmine来运行我的testing,我想在我的范围设置在describefunction,所以我可以有多个function相同的范围数据。

如何用Jasmine为私有方法编写Angular 2 / TypeScript的unit testing

你如何testingangular2的私人function? class FooBar { private _status: number; constructor( private foo : Bar ) { this.initFooBar(); } private initFooBar(){ this.foo.bar( "data" ); this._status = this.fooo.foo(); } public get status(){ return this._status; } } 我find的解决scheme 将testing代码本身放在闭包中,或者在闭包中添加代码,将外部作用域中现有对象上的局部variables的引用存储在闭包中。 之后用工具去掉testing代码。 http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/ 如果你做了什么,请给我build议一个更好的方法来解决这个问题? PS 大多数类似这样的问题的答案不能解决问题,这就是为什么我问这个问题 大多数开发者说你不要testing私有函数,但是我不认为它们是错误的或者正确的,但是我的情况是需要testing私有的。

AngularJS + Jasmine:比较对象

我刚刚开始为我的AngularJS应用程序编写testing,并在Jasmine中这样做。 这里是相关的代码片段 ClientController: 'use strict'; adminConsoleApp.controller('ClientController', function ClientController($scope, Client) { //Get list of clients $scope.clients = Client.query(function () { //preselect first client in array $scope.selected.client = $scope.clients[0]; }); //necessary for data-binding so that it is accessible in child scopes. $scope.selected = {}; //Current page $scope.currentPage = 'start.html'; //For Client nav bar $scope.clientNavItems = [ {destination: […]

Jasmine 2.0 async done()和angular-mocks inject()在同一个testing中它()

我平时的testing用例看起来像 it("should send get request", inject(function(someServices) { //some test })); 和Jasmine 2.0asynchronoustesting应该看起来像 it("should send get request", function(done) { someAsync.then(function(){ done(); }); }); 我如何在一次testing中同时使用完成和注入?