Questions tagged «jasmine»

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

8
如何编写一个期望在Jasmine中引发错误的测试?
我正在尝试为Jasmine测试框架编写测试,该测试会出现错误。目前,我正在使用来自GitHub的Jasmine Node.js集成。 在我的Node模块中,我有以下代码: throw new Error("Parsing is not possible"); 现在,我尝试编写一个预期出现此错误的测试: describe('my suite...', function() { [..] it('should not parse foo', function() { [..] expect(parser.parse(raw)).toThrow(new Error("Parsing is not possible")); }); }); 我也尝试Error()了其他一些变体,只是想不通如何使其工作。

8
Jasmine JavaScript测试-toBe与toEqual
假设我有以下几点: var myNumber = 5; expect(myNumber).toBe(5); expect(myNumber).toEqual(5); 以上两个测试都将通过。在评估数字时toBe()和之间有区别toEqual()吗?如果是这样,什么时候应该使用一个而不是另一个?

15
Angular 2单元测试:找不到名称“描述”
我正在从angular.io关注本教程 正如他们所说,我已经创建了hero.spec.ts文件来创建单元测试: 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); }); }); 单元测试就像一个魅力。问题是:我看到一些错误,这些错误在教程中提到: 我们的编辑器和编译器可能会抱怨他们不知道是什么it ,expect因为它们缺少描述Jasmine的键入文件。我们现在可以忽略那些烦人的投诉,因为它们是无害的。 他们确实忽略了它。即使这些错误是无害的,当我收到很多错误时,在我的输出控制台中看起来也不是很好。 …

4
Jasmine.js比较数组
jasmine.js中是否可以检查两个数组是否相等,例如: arr = [1, 2, 3] expect(arr).toBe([1, 2, 3]) expect(arr).toEqual([1, 2, 3]) 似乎都不起作用。

12
如何使用Jasmine为私有方法编写Angular / TypeScript的单元测试
如何在angular 2中测试私有函数? 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; } } 我找到的解决方案 将测试代码本身放在闭包内,或将添加代码放在闭包内,用于存储对外部作用域中现有对象的局部变量的引用。 稍后使用工具剥离测试代码。 http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/ 如果您做过任何事情,请给我建议解决这个问题的更好方法? 聚苯乙烯 大多数类似问题的答案都无法解决问题,这就是为什么我要问这个问题 大多数开发人员都说您不测试私有功能,但我不是说它们是对还是错,但是我的案例有必要测试私有功能。

7
如何访问和测试node.js模块中的内部(非导出)功能?
我试图弄清楚如何在nodejs(最好是用mocha或jasmine)中测试内部(即不导出)功能。而且我不知道! 假设我有一个类似的模块: function exported(i) { return notExported(i) + 1; } function notExported(i) { return i*2; } exports.exported = exported; 和以下测试(摩卡): var assert = require('assert'), test = require('../modules/core/test'); describe('test', function(){ describe('#exported(i)', function(){ it('should return (i*2)+1 for any given i', function(){ assert.equal(3, test.exported(1)); assert.equal(5, test.exported(2)); }); }); }); 有什么方法可以对notExported功能进行单元测试而不实际导出功能,因为它不是要公开的?

4
toBe(true)与toBeTruthy()与toBeTrue()
之间有什么区别expect(something).toBe(true),expect(something).toBeTruthy()和expect(something).toBeTrue()? 请注意,这toBeTrue()是自定义匹配器,它是jasmine-matchers在其他有用且方便的匹配器(例如toHaveMethod()或)中引入的toBeArrayOfStrings()。 这个问题本来应该是通用的,但作为一个实际示例,我正在测试中显示的元素protractor。在这种情况下,我应该使用哪个匹配器? expect(elm.isDisplayed()).toBe(true); expect(elm.isDisplayed()).toBeTruthy(); expect(elm.isDisplayed()).toBeTrue();

9
如何关注jasmine.js中的一个规范?
我从一个相当大的体系结构更改中得到了很多失败的规范。我想通过用“ focus”标记每个标签来一一修复它们。 jasmine.js是否具有这样的功能?我发誓我曾经读过它,但是我没有在文档中看到它。
154 jasmine 

6
使用Jasmine监视没有对象的函数
我是Jasmine的新手,刚刚开始使用它。我有一个库js文件,其中包含许多未与任何对象关联(即是全局的)的函数。我该如何监视这些功能? 我尝试使用window / document作为对象,但是即使调用了该函数,间谍也无法正常工作。我还尝试将其包装在伪造的对象中,如下所示: var fakeElement = {}; fakeElement.fakeMethod = myFunctionName; spyOn(fakeElement, "fakeMethod"); 并测试 expect(fakeElement.fakeMethod).toHaveBeenCalled(); 这也不起作用,因为间谍不起作用

8
我该如何模拟在AngularJS Jasmine单元测试中返回诺言的服务?
我有myService那个用途myOtherService,它可以进行远程调用,并返回promise: angular.module('app.myService', ['app.myOtherService']) .factory('myService', [ myOtherService, function(myOtherService) { function makeRemoteCall() { return myOtherService.makeRemoteCallReturningPromise(); } return { makeRemoteCall: makeRemoteCall }; } ]) 要对myService我进行单元测试,需要模拟myOtherService,以使其makeRemoteCallReturningPromise方法返回promise。这是我的方法: describe('Testing remote call returning promise', function() { var myService; var myOtherServiceMock = {}; beforeEach(module('app.myService')); // I have to inject mock when calling module(), // and module() should come …

3
有什么方法可以根据参数修改Jasmine间谍?
我有一个函数要测试,该函数使用不同的参数两次调用外部API方法。我想用Jasmine间谍程序来模拟这个外部API,并根据参数返回不同的东西。茉莉花有什么办法吗?我能想到的最好的方法是使用andCallFake的黑客: 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; } }); }); });

9
如何使用angular-cli仅执行一个测试规范
我有使用Angular-CLI(beta 20)构建的Angular2项目。 有没有一种方法可以仅对一个选定的规格文件运行测试? 我曾经有一个基于Angular2快速入门的项目,并且可以手动将规格添加到jasmine文件中。但是我不知道如何在业力测试之外进行设置,或者如何使用Angular-CLI构建将业力测试限制在特定文件中。

17
jasmine:异步回调未在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时内调用
我有一个叫的服务requestNotificationChannel: app.factory("requestNotificationChannel", function($rootScope) { var _DELETE_MESSAGE_ = "_DELETE_MESSAGE_"; function deleteMessage(id, index) { $rootScope.$broadcast(_DELETE_MESSAGE_, { id: id, index: index }); }; return { deleteMessage: deleteMessage }; }); 我正在尝试使用茉莉花对该服务进行单元测试: "use strict"; describe("Request Notification Channel", function() { var requestNotificationChannel, rootScope, scope; beforeEach(function(_requestNotificationChannel_) { module("messageAppModule"); inject(function($injector, _requestNotificationChannel_) { rootScope = $injector.get("$rootScope"); scope = rootScope.$new(); …

9
运行一个测试文件
有没有一种方法可以ng test针对单个文件而不是整个测试套件运行?理想情况下,我想在编辑文件时获得最快的反馈循环,但是karma在每次保存时都执行整个套件,这在构建足够大的测试套件时会有点慢。 这与如何仅使用angular-cli执行一个测试规范不同,因为该问题与运行单个规范有关。这是关于运行单个文件。该解决方案具有相同的Jasmine规范功能,但问题的性质略有不同。

6
如何使WebStorm识别Jasmine方法?
我有一个包含一些Jasmine规范的node.js项目。规范位于spec /子目录中,并且具有jasmine-node所要求的.spec.coffee扩展名。 当我在我的规范文件,打开一个WebStorm IDE,所有的通话beforeEach和describe和it“未解决的函数或方法是()”:显示有蓝色与提示波浪下划线。因此,即使我使用的是3.0 EAP并且应该具有一定数量的Jasmine支持,它也不会自动接受这是Jasmine规格文件的事实。 我尝试进入“文件”>“设置”>“ JavaScript库”,并将Jasmine添加为库(指定jasmine-2.0.0.rc1.js的路径),然后转到“用法范围”子页面并在“项目”旁边的下拉列表,但没有效果-茉莉花方法仍然显示为未解决。 如何告诉WebStorm规范子目录中的所有文件和/或扩展名为.spec.coffee的所有文件都是Jasmine测试,并且能够识别这些测试使用的Jasmine API?
135 jasmine  webstorm 

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.