Tha*_*guy 5 javascript testing formatting travis-ci karma-runner
我正在本地使用 karma 为我的项目实现一些测试,并使用 Travis 进行github测试集成(除非所有测试都通过,否则无法合并拉取请求)
我真的很想对代码格式化做同样的事情。我使用jscs和gulp来检查代码。
我考虑过为Travis添加一个测试,以便在 PR 格式不正确时使测试失败。
有这样做的标准方法吗?目前,我考虑了两个选择:在我的测试套件中添加一个测试来检查格式。如果返回任何错误,则使测试失败。另一种选择是仅在Travis上运行任务,但我不能使Travis构建在 lint 任务上失败。
我看到有一个 karma 预处理器,但据我检查,如果发现任何 jscs 错误,它不会使 travis 失败。
对此有更好的做法吗?
我在互联网上找不到任何内容,因为<TEST_FRAMEWORK> test file formatting只返回了很多有关如何正确格式化测试的结果(可读性)
由于看起来没有任何标准方法可以执行此操作,因此我将列出执行此类操作的两个选项:
您需要让 gulp/grunt 任务返回非零值才能使其失败。如果任务失败,Travis会将其视为构建失败,这将表明 PR 测试失败。在gulp和jscs中,我是这样做的:
gulp.task('lint-js', function() {
return gulp.src(FILES.JS_ALL)
.pipe(cache('linting'))
.pipe(jscs())
.pipe(jscs.reporter())
.pipe(jscs.reporter('fail'));
});
Run Code Online (Sandbox Code Playgroud)
大多数短绒检查员都有一名记者。如果您.reporter('fail')在最后使用管道 a,如果您的 linter 返回任何 lint 错误,它将返回非零。
对于Grunt,由@Nocomm回答,如果发现任何 lint 错误,看起来 grunt 会自动返回非零。
您可以将您的lint任务添加为您test任务的依赖项。如果你像这样添加它:
gulp.task('test', ['lint-js'], function() {//...
Run Code Online (Sandbox Code Playgroud)
当Travis开始运行测试时,它将首先检查所有文件的格式是否正确。如果不是,Travis会将非零返回视为失败,并在GitHub上正确报告
现在,您的 lint 任务因 lint 警告而失败,您可以将该任务添加到.travis.yml before_script运行测试之前运行的命令列表中。只需将其添加到列表末尾,以便在测试之前运行它(为什么要在因格式化而失败的 PR 上运行测试?),并在安装运行此类任务所需的所有内容之后立即运行。