javascript - 为什么(JS 测试库)AVA 没有 "Suites"(或任何其他分组)?

标签 javascript testing ava

我正在查看 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 中的测试组织(以及大多数其他测试运行器)吗?

最佳答案

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

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

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

例如,文件“services/facebook”中的“可以登录”测试将产生以下输出:

services › facebook › can login

关于javascript - 为什么(JS 测试库)AVA 没有 "Suites"(或任何其他分组)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41269085/

相关文章:

javascript - 网页中的鼠标光标或键盘响应

javascript - 使用 javascript 包含背景图片

node.js - Firebase Admin : admin. auth().delete(uid) 未在 AVA test.after() 中解析

node.js - 如何检查它是在 AVA 下还是在正常环境中运行的测试

javascript - 从其事件处理程序之一获取 Selectize.js 元素的基础输入元素

javascript - JS 多函数执行

python - 从 fixture 返回结构化数据的正确方法是什么?

testing - botium webdriverio 连接器的覆盖操作

ruby-on-rails - 使用 RSpec 进行 Rails 片段缓存测试

javascript - 如何使用 ava 的 t.throws 来测试返回 Promise 的函数的错误消息?