我想确认一个值是小数(或0),所以数字应该大于或等于零且小于1。 describe('percent',function(){ it('should be a decimal', function() { var percent = insights.percent; expect(percent).toBeGreaterThan(0); expect(percent).toBeLessThan(1); }); }); 我如何模仿“> = 0”?
茉莉花内置了匹配器toBe和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方法和自定义匹配器的解决方法 ,但似乎还有很多工作要做。 什么是茉莉花比较对象的标准方法?
我首先想说的是,我对RequireJS是新的,对Jasmine是更新的。 我在使用SpecRunner时遇到了一些问题,需要使用JS。 我一直在跟随Uzi Kilon和Ben Nadel的教程(以及其他一些),他们帮助了一些,但我仍然有一些问题。 看来,如果在testing中出现错误(我可以特别想到一个types错误),则将显示spec runner html。 这告诉我,我在JavaScript中有一些问题。 但是,我修复这些错误后,不再显示HTML。 我无法让testing运行者显示。 有人可以find我的代码会导致这个问题的错误吗? 这是我的目录结构 : Root |-> lib |-> jasmine |-> lib (contains all of the jasmine lib) |-> spec |-> src |-> jquery (jquery js file) |-> require (require js file) index.html (spec runner) specRunner.js 这里是SpecRunner(索引)HTML : <!doctype html> <html lang="en"> <head> <title>Javascript Tests</title> <link […]
比方说,我有一个服务shop ,取决于两个有状态的服务schedule和warehouse 。 如何将不同版本的schedule和warehose注入unit testing的shop ? 这是我的服务: angular.module('myModule').service('shop', function(schedule, warehouse) { return { canSellSweets : function(numRequiredSweets){ return schedule.isShopOpen() && (warehouse.numAvailableSweets() > numRequiredSweets); } } }); 这是我的嘲笑: var mockSchedule = { isShopOpen : function() {return true} } var mockWarehouse = { numAvailableSweets: function(){return 10}; } 这是我的testing: expect(shop.canSellSweets(5)).toBe(true); expect(shop.canSellSweets(20)).toBe(false);
我正在用Jasmine编写AngularJS的指令testing,并使用templateUrl: https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行testing时,我得到了错误包括在要点: Error: Unexpected request: GET views/currency-select.html 从我在文档中读到的东西,我认为我正确地做了这件事,但似乎并不是这样 – 我在这里错过了什么? 谢谢
当unit testing一个Angular工厂(Karma + Jasmine)时,如何在被测工厂注入一个存根依赖项? 这是我的工厂: mod = angular.module('myFactoryMod', []); mod.factory('myFactory', [ '$log', 'oneOfMyOtherServices', function($log, svc) { return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc); } ]); 在实例化我的工厂时需要一个或多个其他服务。 这是我的testing: it('can get an instance of my factory', function() { var oneOfMyOtherServicesStub; angular.mock.module('myFactoryMod'); oneOfMyOtherServicesStub = { someVariable: 1 }; //****How do I get my stub in my target? **** angular.mock.inject(['myFactory', function(target) { expect(target).toBeDefined(); […]
我有一个函数我想testing哪个调用外部API方法两次,使用不同的参数。 我想用Jasmine间谍来嘲笑这个外部的API,并根据参数返回不同的东西。 有没有办法在茉莉花做到这一点? 我能想到的最好的方法就是使用和CallCake进行破解: var functionToTest = function() { var userName = externalApi.get('abc'); var userId = externalApi.get('123'); }; describe('my fn', function() { it('gets user name and ID', function() { spyOn(externalApi, 'get').andCallFake(function(myParam) { if (myParam == 'abc') { return 'Jane'; } else if (myParam == '123') { return 98765; } }); }); });
在AngularJS中unit testing隔离范围的好方法是什么? JSFiddle显示unit testing 指令片断 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 = […]
我正在从angular.io继续这个教程 正如他们所说,我已经创build了hero.spec.ts文件来创buildunit testing: import { Hero } from './hero'; describe('Hero', () => { it('has name', () => { let hero: Hero = {id: 1, name: 'Super Cat'}; expect(hero.name).toEqual('Super Cat'); }); it('has id', () => { let hero: Hero = {id: 1, name: 'Super Cat'}; expect(hero.id).toEqual(1); }); }); unit testing就像一个魅力。 问题是:我看到一些错误,在教程中提到: 我们的编辑和编译器可能会抱怨说,他们不知道it和expect是什么it因为他们缺乏描述茉莉花的打字文件。 现在我们可以无视那些烦人的投诉,因为它们是无害的。 他们确实忽视了它。 即使这些错误是无害的,当我收到他们一堆时,在我的输出控制台中看起来不太好。 我得到的例子: […]
我是茉莉花新手,刚刚开始使用它。 我有一个图书馆的js文件与许多function,这是没有任何对象(即全球)的关联。 我如何去探究这些function? 我尝试使用窗口/文档作为对象,但即使函数被调用间谍也不工作。 我也尝试把它包装在一个假物体中,如下所示: var fakeElement = {}; fakeElement.fakeMethod = myFunctionName; spyOn(fakeElement, "fakeMethod"); 和testing expect(fakeElement.fakeMethod).toHaveBeenCalled(); 这不工作,因为间谍没有工作