备注
这是 watch-mode.md 的简体中文翻译。这个链接 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到watch-mode.md
发生变化,那就意味着这份翻译文档是最新的)。
翻译:Français, Italiano, Русский, 简体中文
AVA 自带了一个聪明的观察模式,它会观察那些改变了的文件并运行受到改变影响的测试。
你可以通过使用--watch
或-w
标志来启用观察模式,如果你是全局安装的 AVA:
$ ava --watch
如果你将 AVA 配置在package.json
中,像这样:
{
"scripts": {
"test": "ava"
}
}
你可以这样运行:
$ npm test -- --watch
你可以设置一个特殊的脚本:
{
"scripts": {
"test": "ava",
"test:watch": "ava --watch"
}
}
然后使用:
$ npm run test:watch
AVA 使用 chokidar
来作为文件观察器,它被配置为可选的依赖库,因为chokidar
有时候无法安装,如果chokidar
安装失败那么观察模式就不可用,然后你将看到一条这样的信息:
The optional dependency chokidar failed to install and is required for --watch. Chokidar is likely not supported on your platform.
请参考 chokidar
文档 了解如何解决这个问题。
在 AVA 中源文件和测试文件是有差别的,正如你所想的一样,测试文件包含了你的测试,源文件是需要支持测试运行的其他所有文件,是你的源代码或者测试数据。
默认情况下 AVA 观察测试文件,package.json
和其他的.js
文件的改变,它会忽略由 ignore-by-default
包提供的特定文件夹 下的文件。
你可以使用 --source
CLI 标志或package.json
文件的ava
属性为源文件配置模式,注意如果你从 ignore-by-default
中指定了一个负模式目录,那么忽略将不再有效,所以你可能想要在你的配置里重复这些操作。
如果你的测试会写入磁盘,那么它们会跟踪观察器来返回你的测试,这种情况下你需要使用--source
标志。
AVA 跟踪测试文件依赖的源文件,如果你改变的源文件只有一个测试被依赖,那么就只会返回这个测试,如果它不能识别哪个测试文件依赖了这个被修改的源文件,那么它会返回所有的测试。
依赖跟踪在 required 模式中有效,支持自定义继承和转换,使用 --require
CLI 标志而不是从你的测试文件来帮助你加载它们。使用fs
模块来访问的文件不会被跟踪。
你可以在 console 中,通过在Enter后面打印r来快速返回所有测试,
有时候观察模式会出现一些意想不到的事情,比如当你只运行一个测试时会返回所有测试,为了调查原因你可以启用调试模式:
$ DEBUG=ava:watcher npm test -- --watch
在 Windows 里这样用:
$ set DEBUG=ava:watcher
$ npm test -- --watch
观察模式比较新并且现在处于初期阶段,请 报告 任何你遇到问题,谢谢!