7

我正在查看 AVA 测试运行程序,它的并发功能似乎非常引人注目。但是,我习惯了 Mocha,您可以像这样组织测试:

describe('Some Class', () => {
    describe('#someMethod', () => {
        describe('some condition', () => {
            it('does something', () => {});
        });
    });
});

通过以这种方式组织测试,您可以轻松地判断在一堆测试失败时哪些组件会受到影响,并且您可以轻松地针对特定的类/方法/条件重新运行测试。

但是 AVA 没有这些。它的测试根本没有任何“元信息”,只是:

test(t => {
    t.deepEqual([1, 2], [1, 2]);
});

但显然 AVA 是一个流行且广泛使用的框架,所以我的问题是:没有测试元信息它是如何工作的?在 AVA 中是否有其他定义元信息的方法?由于 AVA 具有其他功能,因此不需要元信息吗?

基本上,作为 AVA 局外人,我试图了解当您拥有真正的测试套件时它是如何工作的(不仅仅是 AVA 示例中显示的基本测试)。或者换一种说法,如果我切换到 AVA,我会想念 Mocha 中的测试组织(以及大多数其他测试运行者)吗?

4

2 回答 2

16

现在使用 Ava 一段时间后,我的问题的答案似乎是 Ava确实有套件,但与显式定义套件的 Mocha(或类似框架)不同,Ava 中的套件是隐式的,并且基于包含的文件考试。

换句话说,如果您想beforeEach在给定的“套件”中运行某些代码测试,您只需将这些测试与test.beforeEach语句放在同一个文件中,然后它只会在这些测试之前运行。

显然,这会导致测试输出的粒度较小,因为您不能像describe在 Mocha 中那样嵌套语句。但是,当 Ava 显示测试输出时,它使用文件结构来帮助缓解这种情况。

例如,在文件 `services/facebook' 中测试“可以登录”将导致以下输出:

服务 › 脸书 › 可以登录

于 2017-01-19T00:31:11.820 回答
4

如果需要,有一个模块ava​​-spec会尝试将其重新引入 ava。

于 2019-05-03T13:34:05.723 回答