我发现Karma js测试设置和编写有点麻烦,发现自己经常忽略编写测试,因此我想知道是否存在更好的替代方案。
因为我使用打字稿,我的梦想场景就是如果我能写出这样的东西:
module adder {
export function add(a, b){
return a + b;
}
}
[Tests]
assert.equal(4, adder.add(2, 2));
我的测试是内联的,并且会在当前文件发生更改时直接在我的编辑器中运行。由于打字稿可以轻松地从最终输出中删除测试,我可以将我的测试放在与我的代码相同的文件中(我认为越接近越好)。是否有任何测试框架支持这一点,如果不支持这种情况需要什么。
答案 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( ... ) };