任何测试框架是否支持TypeScript中的内联测试?

时间:2016-09-22 12:51:09

标签: javascript unit-testing typescript

我发现Karma js测试设置和编写有点麻烦,发现自己经常忽略编写测试,因此我想知道是否存在更好的替代方案。

因为我使用打字稿,我的梦想场景就是如果我能写出这样的东西:

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

我的测试是内联的,并且会在当前文件发生更改时直接在我的编辑器中运行。由于打字稿可以轻松地从最终输出中删除测试,我可以将我的测试放在与我的代码相同的文件中(我认为越接近越好)。是否有任何测试框架支持这一点,如果不支持这种情况需要什么。

1 个答案:

答案 0 :(得分: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));
    }

}

尽管如此,测试代码的结构与Jasmine语法非常相似:

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

});

你的理想,即:

[Test]
assert.equal( ... )

使用TypeScript装饰器甚至泛型是不可能的。您正在尝试将属性应用于任意代码行。这必须是一个开始的函数,以便正确使用JavaScript作用域规则:

[Test]
test1() { assert.equal( ... ) };