2016-09-22 8 views
2

私はKarma jsテストを設定して書くのがやや面倒で、このために書き込みテストを無視していることが多いので、より良い選択肢があるかどうかを知りたいと思っていました。どのテストフレームワークもTypeScriptのインラインテストをサポートしていますか?

私はこのような何か書くことができれば私の夢のシナリオは次のようになり活字体を使用するので:

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

私のテストは、インラインであり、現在のファイルの変更が発生したときに、私のエディタで直接実行されるだろうし。 typescriptはテストを最終出力から簡単に取り除くことができるので、私のコードと同じファイルにテストを置くことができます。テストフレームワークはこれをサポートしていますか、そうでない場合は、このシナリオをサポートするために必要なものはありません。

答えて

2

ちょうどペナントノート - カルマはテストランナーであり、テストフレームワークではありません。ただし、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(...) }; 
関連する問題