2015-12-23 25 views
1

我正在開發一個項目,其中我必須用Jasmine測試我的js代碼。我寫這樣的測試。如何在Jasmine.js中編寫方案

describe("Function: foo() --- File: foo.js", function() { 
    it("if input is integer", function() { 
     var result = foo(123); 
     expect(result).toBe(123); 
    }); 

    it("If input is string", function() { 
     var result = foo('String'); 
     expect(result).toBe('String'); 
    }); 

    it("If input is empty string", function() { 
     var result = foo(''); 
     expect(result).toBe(''); 
    }); 

}); 

正如代碼所示,我一直重複同樣的'it'塊。只有改變的東西是描述,輸入到「toBe」中的功能和輸出。我想詢問是否有與我可以在我的測試中像這樣的列表/字典添加我的情景,並利用它們不使用任何for循環

describe("Function: foo() --- File: foo.js", function() { 
    scenarios = [ 
     {description: "if input is integer", input: 123, output: 123}, 
     {description: "if input is String", input: "String", output: "String"}, 
     {description: "if input is empty string", input: '', output: ''}, 
    ]; 

    //This will run for each scenario in above list 
    it(this.description, function() { 
     var result = foo(this.input); 
     expect(result).toBe(this.output); 
    }); 

}); 

任何一個可以幫助我在這種情況下呢?

回答

2

你可以達到你想要什麼using

describe("Function: foo() --- File: foo.js", function() { 
var scenarios = [ 
     {description: "if input is integer", input: 123, output: 123}, 
     {description: "if input is String", input: "String", output: "String"}, 
     {description: "if input is empty string", input: '', output: ''}, 
    ]; 

scenarios.map(function(value) { 
    it(value.description, function() { 
     var result = foo(value.input); 
     expect(result).toBe(value.output); 
    }); 
}); 
} 
+0

我得到錯誤「的ReferenceError:使用沒有定義」當我用這個。 –

+0

@mhassan我認爲它已被棄用。請嘗試編輯的代碼。它應該工作。 – Zakaria

+0

它的工作。非常感謝。 @Zakaria。 –