是否可以通过JSCS / JSHint限制fit / fdescribe函数?

时间:2015-11-04 13:14:12

标签: javascript angularjs unit-testing

我在一些开发团队工作。我们的程序中有单元测试。它有很多测试。每个测试涵盖一个模块。通常,一个开发人员每个任务只在一个或一些模块上工作(但不是很多)。为了提高单元测试的速度,我使用聚焦规格(我使用Jasmine,我们的应用程序是AngularJS应用程序)。

问题:有时我会忘记删除重点规格。我在程序中通过fit / fdescribe调用提交和PR。它可能会给我和其他开发人员带来问题。明显的例子:开发人员正在开发:),他犯了一个错误,他开始测试,只有专注的规范工作,因为他在另一个文件上工作 - 这是一个问题 - 会有错误,但他不会看到它。 / p>

是否有任何方法可以在我的测试中自动查找重点规格并向开发人员发出警告?我们的团队正在使用CI和grunt运行它。 Grunt有jscs和jshint的任务。也许以某种方式可以创建自己的规则来防止这种错误?

1 个答案:

答案 0 :(得分:2)

我会设置一个git钩子并使用grunt-ddescribe-iit

现在,让我们使用grunt-githooks来设置git钩子。

grunt.initConfig({
  githooks: {    
    options: {
      'pre-push': 'grunt ddescribe-iit'
    }
  },
  ddescribe-iit: {
    files: [
      'test/**/*.js',
      'app/**/*.spec.js'
    ]
  }
});  

这是一个非常人为的例子,说明我想它会如何工作,我没有自己使用ddescribe-iit(虽然,像你一样 - 我应该!)也没有使用grunt-githooks

看看它们是如何组合在一起的,我的确定猜测是这将是一个相当无痛的过程来设置。

和你一样,我们也在使用CI系统,当构建通过时,总是很痛苦,但它只运行了几个选择的测试。在推送之前使用git hook在你的脸上尖叫,在我估计的根处杀死问题(在开发步骤中没有引入观察者和其他过程)。

所有这些都是以 0 为开发成本的惊人代价。

编辑:此答案假定您正在将grunt用作任务运行器。有equivalents for gulp。