如何测试使用 jasmine + TypeScript 使用常量调用的函数

     2023-03-13     303

关键词:

【中文标题】如何测试使用 jasmine + TypeScript 使用常量调用的函数【英文标题】:How do you test a function which is called with a constant using jasmine + TypeScript 【发布时间】:2016-11-29 15:39:35 【问题描述】:

我正在开发一个 Angular2 / TypeScript 项目并使用 jasmine 进行单元测试。

如何测试使用 jasmine 以常量调用的函数。 例如。 Logo.ts

export const RADIUS: number = 10;

export class Logo 
  ...
  protected drawCircle( x: number, y: number, r: number )...

  protected drawLogo()
    this.drawCircle( RADIUS, RADIUS, RADIUS );
  
  ...

Logo.spec.ts

describe('drawLogo', function () 
  beforeEach(() => 
    spyOn( logo, 'drawCircle');
  
  it('should call drawCircle method with parameters')
    expect( logo.drawCircle ).toHaveBeenCalledWith( 10, 10, 10 ); //This fails
  

除了将常量作为参数传递给 toHaveBeenCalledWith 方法之外,还有其他测试方法吗?

【问题讨论】:

您可以使用logo.drawCircle.calls.mostRecent().args 获得更多灵活性。 你永远不会在你的测试中调用 drawLogo() 。那应该如何工作呢?? 【参考方案1】:

你需要先使用间谍

spyOn('logo','drawCircle');
logo.drawLogo();
 expect( logo.drawCircle ).toHaveBeenCalledWith( 10, 10, 10 );

【讨论】:

@tymspy 那么,解决方案是什么?因为你在刚刚发布的代码中做了同样的事情 @iberbeu 我错过了调用你提到的方法。【参考方案2】:

将 RADIUS 导入您的规范文件,然后

expect( logo.drawCircle ).toHaveBeenCalledWith( RADIUS, RADIUS, RADIUS );

【讨论】:

如何对 DOM 操作进行单元测试(使用 jasmine)

】如何对DOM操作进行单元测试(使用jasmine)【英文标题】:howtounittestDOMmanipulation(withjasmine)【发布时间】:2013-04-1608:14:13【问题描述】:我需要用jasmine对一些DOM操作函数进行单元测试(目前我在浏览器和Karma中运行我的测试)我... 查看详情

如何使用jasmine使用dom元素测试javascript?

我试图在jasmine中为JavaScript代码编写测试,包括不起作用的DOM元素。当我只测试JavaScript代码(只是简单的函数而不是DOM元素)时,它可以工作。我一直在研究这个问题并且找不到答案。我也尝试使用jsdom,因为它应该在测试DOM元... 查看详情

如何在 Jasmine 中使用 React 测试工具

】如何在Jasmine中使用React测试工具【英文标题】:HowtouseReactTestUtilitieswithJasmine【发布时间】:2014-03-3012:53:09【问题描述】:我用React的测试工具编写了单元测试代码。但是遇到了问题我的环境是:导轨4茉莉花2.0.0主干1.1.2describe("... 查看详情

如何使用 jasmine 为 switch case 编写单元测试

】如何使用jasmine为switchcase编写单元测试【英文标题】:Howtowriteunittestforswitchcaseusingjasmine【发布时间】:2015-11-1008:37:02【问题描述】:下面是我的代码vars=function()return\'APICALL\';//ThroughsomeAPIcalliamgettingandintegervalue;switch(s())case0:store. 查看详情

如何使用 Jasmine 为私有方法编写 Angular / TypeScript 单元测试

】如何使用Jasmine为私有方法编写Angular/TypeScript单元测试【英文标题】:HowtowriteunittestingforAngular/TypeScriptforprivatemethodswithJasmine【发布时间】:2016-06-2911:06:28【问题描述】:如何在Angular2中测试私有函数?classFooBarprivate_status:number;co... 查看详情

如何在 Jasmine 测试中测试 $scope?

】如何在Jasmine测试中测试$scope?【英文标题】:Howtotest$scopeinJasminetest?【发布时间】:2016-09-1414:47:20【问题描述】:我尝试使用Jasmine为Angularjs编写单元测试。这是我的控制器:functionHomeController($scope,fav,news,materials)console.log(\'homec... 查看详情

如何在 Angular 中使用 Jasmine 测试 RxJS switchMap?

】如何在Angular中使用Jasmine测试RxJSswitchMap?【英文标题】:HowtotestRxJSswitchMapwithJasmineinAngular?【发布时间】:2022-01-1611:45:10【问题描述】:在我的Angular项目中,我的一个组件中有这段代码:delete(post:PostInterface):voidconstdelete$=this.app... 查看详情

使用 Jasmine 进行 Angular 单元测试:如何删除或修改 spyOn

】使用Jasmine进行Angular单元测试:如何删除或修改spyOn【英文标题】:AngularunittestingwithJasmine:howtoremoveormodifyspyOn【发布时间】:2015-05-0311:55:14【问题描述】:AngularJSv1.2.26茉莉花v2.2.0如何更改或删除spyOn的行为?当我尝试覆盖它时... 查看详情

如何在 Jasmine 单元测试中使用 Sinon 对 jQuery 动画进行假时间?

】如何在Jasmine单元测试中使用Sinon对jQuery动画进行假时间?【英文标题】:HowdoIfake-timeajQueryanimationusingSinoninaJasmineunittest?【发布时间】:2011-11-1113:10:27【问题描述】:我有一个1秒的jQuery.animate操作,在页面加载后5秒启动。我在Ja... 查看详情

在 Angular 中使用 Jasmine 使用 *ngIf 指令时,如何对元素是不是可见进行单元测试

】在Angular中使用Jasmine使用*ngIf指令时,如何对元素是不是可见进行单元测试【英文标题】:HowdoIunittestifanelementisvisiblewhenthe*ngIfdirectiveisusedusingJasmineinAngular在Angular中使用Jasmine使用*ngIf指令时,如何对元素是否可见进行单元测试【... 查看详情

如何使用 Angular 4 Jasmine 单元测试用例覆盖 IF/ELSE 条件

】如何使用Angular4Jasmine单元测试用例覆盖IF/ELSE条件【英文标题】:HowtocoverIF/ELSEconditionwithAngular4Jasmineunittestcase【发布时间】:2018-05-2419:55:23【问题描述】:帮助我覆盖IF/Else覆盖范围和返回HTTP响应的方法以及构造函数以覆盖Jasmin... 查看详情

你如何使用 Jasmine + Resharper 引用外部库

】你如何使用Jasmine+Resharper引用外部库【英文标题】:HowdoyoureferenceexternallibrarieswithJasmine+Resharper【发布时间】:2013-07-2603:19:48【问题描述】:我可以从Resharper8.0单元测试运行器运行Jasmine单元测试。我有一个问题,通常在html页面... 查看详情

如何安装和使用karma-jasmine

 注意:本文中出现的资料链接、karma的插件安装等,均可能需要翻$墙后才能正确执行。 Jasmine是一个JavaScript的测试工具,在Karma上运行Jasmine可完成Javascript的自动化测试、生成覆盖率报告等。本文不包含Jasmine的使用细节... 查看详情

在 Nodejs 中使用 Jasmine 测试 promise 是不是被解决或拒绝

...拒绝【发布时间】:2015-01-2516:21:08【问题描述】:我知道如何在Mocha中做到这一点,但想知道如何在Jasmine中做到这一点。我试过这个describe(\'tes 查看详情

如何在 Visual Studio Code 中使用 Typescript 和 Jasmine 框架编写 Protractor 测试脚本?

】如何在VisualStudioCode中使用Typescript和Jasmine框架编写Protractor测试脚本?【英文标题】:HowtowriteProtractortestscriptsusingTypescriptalongwithJasmineframeworkinVisualstudioCode?【发布时间】:2017-01-1321:07:31【问题描述】:我的项目正在从独立到Web... 查看详情

如何编写一个期望在 Jasmine 中抛出“错误”的测试?

】如何编写一个期望在Jasmine中抛出“错误”的测试?【英文标题】:HowcanIwriteatestwhichexpectsan\'Error\'tobethrowninJasmine?【发布时间】:2011-05-0721:05:06【问题描述】:我正在尝试为JasmineTestFramework编写一个测试,它预计会出错。目前我... 查看详情

使用 jasmine / karma 进行 Angular 4 单元测试和 http post mocking - 如何修复

】使用jasmine/karma进行Angular4单元测试和httppostmocking-如何修复【英文标题】:Angular4unittestingwithjasmine/karmawithhttppostmocking-howtofix【发布时间】:2018-03-0708:01:12【问题描述】:我有一项服务,我想在Angular4typescriptjasmine中进行单元测试... 查看详情

如何使用jasmine-marbles测试rxjs管道中的timeout()(代码片段)

我编写了一个过滤输入observable的管道。在管道中,我使用timeout()运算符指定超时,如果源未及时发出预期值,则中止等待。我想用jasmine-marbles测试超时情况,但我无法让它工作。我相信expect(source).toBeObservable()会在源发出之前... 查看详情