javascript - 是否有测试框架支持 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));

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

最佳答案

只是一个迂腐的说明 - 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( ... ) };

关于javascript - 是否有测试框架支持 TypeScript 中的内联测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639595/

相关文章:

reactjs - React 类组件有属性,但 Typescript 说没有

javascript - div标签对齐问题

android 测试经常停在 'instantiating tests'

Typescript 和 Angular2-highcharts : Property 'series' does not exist on type 'Object'

java - 创建我自己的注释以扩展 JUnit4 行为

visual-studio-2010 - 大型 Visual Studio 解决方案中的单元/集成测试组织

reactjs - Redux 工具包和 createAsyncThunk 不适用于 axios 实例

javascript - 将单词包裹在标签中,保留标记

javascript - 如何在具有更多参数的函数中使用 e.preventDefault()?

javascript - 将多维对象数组缩减为单个对象数组