2015-02-05 83 views
0

我对茉莉花很新,事实上,我今天刚刚开始,并没有事先知识写JS单元测试cases.I编写单元测试使用茉莉花为外部JavaScript文件。不幸的是,我我不太确定如何为没有任何参数的函数编写单元测试。到目前为止我看到的所有示例都显示了一个函数,其中至少有一个参数并返回一些值。单元测试使用茉莉花框架的JavaScript

与被测试函数的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 }); 
    } 
}; 
}; 

现在,我已经创造了茉莉testing.Here另一个项目我已创建的另一个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 
}); 

});

有人请指导我在正确的方向。

+0

移动要测试到功能逻辑确实需要参数。 – 2015-02-05 19:36:08

+0

那么,有没有办法测试一个不带参数的函数呢? ..除了做你的建议。 – 2015-02-05 19:38:22

+0

你的self.contactNumber和self在哪里? SSN()函数 – 2015-02-05 19:40:55

回答

0

如果您的评论是,我认为你需要添加像这样:

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

其实如果输入是111111111,我期望它的格式是这样的111-11-1111.我可以写这实际上没有采取input.I即将尝试,虽然 – 2015-02-05 19:46:26

+0

我不知道我明白。要测试SSN()函数,您需要提供输入,运行正在测试的代码片段,然后测试输出。在上面的例子中,你可能会在它的上面有一行执行一个函数(也许是SSN('1111111'));那么你会测试结果来检查它是否符合你的期望。 – garryp 2015-02-05 19:53:32

+0

实际上这是一个正在被调用的场的模糊事件的功能。所以,该字段已经填充。因此不需要输入参数。 – 2015-02-05 19:56:05

0

您可以编写测试用例这样

// 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(); 
}); 
+0

不幸的是,我得到了一个引用错误,指出'provider is not defined'和'Can not read property'contactNumber'of undefined'。 – 2015-02-05 20:01:53

+0

错别字错误它会提供者,我没有注意到你写了var provider = new provider – 2015-02-05 20:03:31

+0

@AhhhhhkKS:在你的'describe'中你声明了一个名为“Provider”的变量,然后在'beforeEach'中你将该值设置为'新的提供者()'---你的JavaScript的命名约定完全倒退了。 JavaScript中的“类”应该是PascalCase,例如'Provider',你的变量应该是camelCase,例如'provider'。可以肯定的是,这就是你遇到错误的原因。 – 2015-02-05 20:04:23