2016-09-22 86 views
2

我發現Karma js測試在設置和編寫時有點麻煩,並且由於這個原因經常忽略編寫測試,所以我想知道是否有更好的選擇。任何測試框架是否支持TypeScript中的內嵌測試?

由於我使用的打字稿我的夢想的情況是,如果我能寫這樣的事:

module adder { 
    export function add(a, b){ 
     return a + b; 
    } 
} 
[Tests] 
assert.equal(4, adder.add(2, 2)); 

我的測試是內聯,並會在何時當前文件的變化發生在我的編輯器直接運行。由於打字稿可以很容易地從最終輸出中刪除測試,所以我可以將測試放在與我的代碼相同的文件中(我認爲越接近越好)。任何測試框架是否支持這一點,如果不支持這種情況將需要什麼。

回答

2

只是一個迂腐的筆記 - Karma是一個測試運行者,而不是測試框架。但是,它可以使用Jasmine,Mocha,QUnit或自己的測試框架。

您可能可以使用裝飾器語法來完成此類行爲。喜歡的東西:

@TestSuite 
class AdderTests { 
    @Test 
    test1() { 
     assert.equal(4, adder.add(2,2)); 
    } 
    @Test 
    test2() { 
     assert.equal(0, adder.add(2,-2)); 
    } 

} 

話雖如此,不過,測試代碼的結構非常相似,茉莉花語法:

describe('AdderTests',() => { 
    it('should add 2 and 2',() => { 
     expect(adder.add(2,2)).toBe(4); 
    } 

}); 

你的理想,即:

[Test] 
assert.equal(...) 

是不是真的可以使用TypeScript裝飾器,甚至是泛型。您正嘗試將屬性應用於任意代碼行。爲了正確使用JavaScript範圍規則,這必須是一個函數:

[Test] 
test1() { assert.equal(...) }; 
相關問題