如何使用 Jasmine 为以下 javascript 函数编写单元测试用例

     2023-03-16     209

关键词:

【中文标题】如何使用 Jasmine 为以下 javascript 函数编写单元测试用例【英文标题】:How to write Unit Test Case for below javascript function using Jasmine 【发布时间】:2019-04-13 03:24:37 【问题描述】:

如何使用 Jasmine 为下面的 javascript 函数编写单元测试用例?

function GetURLParameter(sParam) 
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
            return sParameterName[1];
        
    

【问题讨论】:

【参考方案1】:

根据 jasmine 文档,jasmine 包含两个内容描述和规范。

describe 函数用于对相关规范进行分组,通常每个 测试文件在顶层有一个。字符串参数用于命名 规格的集合,并将与规格连接起来 规范的全名。这有助于在大型套件中查找规格。如果你 把它们命名好,你的规格在传统 BDD 中读作完整的句子 风格。

规格是通过调用全局 Jasmine 函数来定义的,它, like describe 需要一个字符串和一个函数。字符串是标题 规范和功能是规范或测试。一个规范包含一个 或更多测试代码状态的期望。一个期待 Jasmine 中的断言是真或假。规格与 所有真正的期望都是合格的规格。具有一个或多个错误的规范 期望是一个失败的规范。

阅读更多here

你可以这样做:

function GetURLParameter(sParam)    
    var sPageURL = "email=someone@example.com"; //replace it with your
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
            return sParameterName[1];
        
    

// specs code
describe("check for url", function() 
  //defining it should be something
  it("should be defined", function() 
    expect(GetURLParameter).toBeDefined();
  );
  
  it("should run", function() 
    expect(GetURLParameter('email')).toEqual("someone@example.com");
  );
  
 

);

var NOT_IMPLEMENTED = undefined;

// load jasmine htmlReporter
(function() 
  var env = jasmine.getEnv();
  env.addReporter(new jasmine.HtmlReporter());
  env.execute();
());
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<link href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css" rel="stylesheet"/>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>

【讨论】:

如何使用 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,如何检查空数组

】预期[]为[]Jasmine,如何检查空数组【英文标题】:Expected[]tobe[]Jasmine,howtocheckemptyarray【发布时间】:2018-03-1414:09:34【问题描述】:尝试检查空数组时出错。我尝试使用:案例1:通过初始化为数组expect(fixture.componentInstance.dataSource... 查看详情

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

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

如何在 Angular 7 中使用 Karma/Jasmine 为 App_Initializer 编写单元测试用例

】如何在Angular7中使用Karma/Jasmine为App_Initializer编写单元测试用例【英文标题】:howtowriteunittestcasesforApp_InitializerusingKarma/Jasmineinangular7【发布时间】:2019-06-3002:41:22【问题描述】:我已经在我的app.module.ts文件中导入了APP_INITIALIZER... 查看详情

如何使用 angular9 和 Jasmine 为所有组件生成 .pdf 格式的单元测试用例代码覆盖率报告

】如何使用angular9和Jasmine为所有组件生成.pdf格式的单元测试用例代码覆盖率报告【英文标题】:Howtogenerateunittestcasecodecoveragereportin.pdfforallcomponentsusingangular9andJasmine【发布时间】:2021-06-2104:04:18【问题描述】:.html格式的Angular支... 查看详情

如何添加 Jasmine 自定义匹配器 Typescript 定义?

】如何添加Jasmine自定义匹配器Typescript定义?【英文标题】:HowdoIaddaJasminecustommatcherTypescriptdefinition?【发布时间】:2017-10-0222:18:18【问题描述】:我一直是lookingaround,这个问题似乎是recurringthing。但是,我发现的解决方案似乎都... 查看详情

如何使用 Mocha / Jasmine 在控制器方法中为 if else 案例获得 Karma 覆盖?

】如何使用Mocha/Jasmine在控制器方法中为ifelse案例获得Karma覆盖?【英文标题】:HowtogetKarmacoveragefortheifelsecasesincontrollermethodusingMocha/Jasmine?【发布时间】:2017-04-2204:59:55【问题描述】:我有以下控制器方法:functionchangeItem(itemList)vm... 查看详情

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

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

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

】如何测试使用jasmine+TypeScript使用常量调用的函数【英文标题】:Howdoyoutestafunctionwhichiscalledwithaconstantusingjasmine+TypeScript【发布时间】:2016-11-2915:39:35【问题描述】:我正在开发一个Angular2/TypeScript项目并使用jasmine进行单元测试。... 查看详情

如何使用 karma/jasmine 在 angularAMD 中模拟服务?

】如何使用karma/jasmine在angularAMD中模拟服务?【英文标题】:HowtomockserviceinangularAMDwithkarma/jasmine?【发布时间】:2014-12-1223:44:13【问题描述】:我有一个使用AngularAMD/RequireJS/Karma/Jasmine的项目,我的基本配置一切正常,大多数单元... 查看详情

如何确认我使用的是啥版本的 Jasmine?

】如何确认我使用的是啥版本的Jasmine?【英文标题】:HowcanIconfirmwhatversionofJasmineI\'musing?如何确认我使用的是什么版本的Jasmine?【发布时间】:2014-08-3017:37:24【问题描述】:如果我记得Jasmine中有一个命令可以将我正在运行的Jasm... 查看详情

如何确认我使用的是啥版本的 Jasmine?

】如何确认我使用的是啥版本的Jasmine?【英文标题】:HowcanIconfirmwhatversionofJasmineI\'musing?如何确认我使用的是什么版本的Jasmine?【发布时间】:2014-08-3017:37:24【问题描述】:如果我记得Jasmine中有一个命令可以将我正在运行的Jasm... 查看详情

如何安装和使用karma-jasmine

...ma的插件安装等,均可能需要翻$墙后才能正确执行。 Jasmine是一个JavaScript的测试工具,在Karma上运行Jasmine可完成Javascript的自动化测试、生成覆盖率报告等。本文不包含Jasmine的使用细节,这几天我会写一篇Jasmine的入门文章,... 查看详情

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

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

如何使用 Jasmine 监视值属性(而不是方法)

】如何使用Jasmine监视值属性(而不是方法)【英文标题】:HowtospyOnavalueproperty(ratherthanamethod)withJasmine【发布时间】:2014-01-1917:25:57【问题描述】:Jasmine的spyOn可以很好地改变方法的行为,但是有没有办法改变对象的值属性(而... 查看详情

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

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

AngularJS – 如何在 Jasmine 中为输入事件指令编写单元测试

】AngularJS–如何在Jasmine中为输入事件指令编写单元测试【英文标题】:AngularJS–howtowriteunit-testinJasmineforentereventsdirective【发布时间】:2014-09-1516:45:23【问题描述】:我在AngularJS中创建了enterevent指令,所以我想为该指令运行测试... 查看详情