2015-02-05 85 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