我发现 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/