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

时间:2018-11-09 14:35:08

标签: javascript unit-testing jasmine karma-jasmine

如何使用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 个答案:

答案 0 :(得分:0)

根据茉莉花文档,茉莉花包含两个描述和规格。

  

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>