使用Jasmine框架对javascript进行单元测试

Unit testing javascript using Jasmine framework

本文关键字:单元测试 javascript Jasmine 框架 使用      更新时间:2023-09-26

我对Jasmine很陌生,事实上我今天刚开始,以前不知道如何编写JS单元测试用例。我正在为一个外部javascript文件使用Jasmine编写单元测试。不幸的是,我不太确定如何为没有任何参数的函数编写单元测试。到目前为止,我看到的所有示例都显示了一个函数,其中至少有一个参数和一些返回值。

带有要测试的函数的javascript文件。(CreateProvider.js)

  var provider = function () {
        var self = this;
 self.formatPhoneNumber = function () {
    if (self.contactNumber().length == 10) {
        self.contactNumber(self.contactNumber().replace(/('d{3})('d{3})('d{4})/, "($1)$2-$3"));
        $("#contactNumber").rules("remove", "max");
        $("#contactNumber").rules("add", { maxlength: 13 });
    }
};
self.formatSSN = function () {
    if (self.SSN().length == 9) {
        self.SSN(self.SSN().replace(/('d{3})('d{2})('d{4})/, "$1-$2-$3"));
        $("#SSN").rules("remove", "max");
        $("#SSN").rules("add", { maxlength: 11 });
    }
};
 };

现在,我创建了另一个茉莉花测试项目。在这里,我创建了另一个Javascript文件。

 /// <reference path = ""../../App_Scripts/CreateProvider.js"" />
 describe("providerTests", function () {
   var Provider;
  beforeEach(function () {
      Provider = new provider();
   });
it("should format a phone number", function () {
    //Unit test a function without parameters
});

});

有人能指引我朝正确的方向走吗。

你的评论在哪里我认为你需要添加这样的内容:

expect(Provider.SSN()).toBe(/*whatever you expect it to be*/);

您可以编写这样的测试用例

// Success test case
it("should format a phone number", function (done) {
    provide.contactNumber(0801111111);
    provider.formatPhoneNumber();
    expect(Provider.contactNumber()).toBe('(080)111-1111')
    done();
 });
// fail test case since length in not 10
it("length is not equal to 10", function (done) {
    provide.contactNumber(080111111);
    provider.formatPhoneNumber();
    expect(Provider.contactNumber()).toBe(080111111)
    done();
});