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

Javascript 是否有任何测试框架支持TypeScript中的内联测试?,javascript,unit-testing,typescript,Javascript,Unit Testing,Typescript,我发现Karma js测试在设置和编写上有点麻烦,并且发现自己经常因此而忽略编写测试,所以我想知道是否存在更好的替代方案 因为我使用了typescript,所以我的梦想是如果我能写这样的东西: module adder { export function add(a, b){ return a + b; } } [Tests] assert.equal(4, adder.add(2, 2)); 我的测试是内联的,当当前文件发生更改时,将直接在编辑器中运行。因为t

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

因为我使用了typescript,所以我的梦想是如果我能写这样的东西:

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

我的测试是内联的,当当前文件发生更改时,将直接在编辑器中运行。因为typescript可以很容易地从最终输出中删除测试,所以我可以将测试和代码放在同一个文件中(我认为越接近越好)。是否有任何测试框架支持这一点,如果没有,支持这一场景需要什么。

只是一个迂腐的注释-Karma是一个测试运行者,而不是一个测试框架。但是,它可以使用Jasmine、Mocha、QUnit或滚动您自己的测试框架

您可以使用decorator语法来完成这种行为。比如:

@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( ... ) };