【问题标题】:Is it possible to restrict fit/fdescribe functions by JSCS/JSHint?是否可以通过 JSCS/JSHint 限制 fit/fdescribe 函数?
【发布时间】:2015-11-04 13:14:12
【问题描述】:

我在某个开发团队工作。我们的程序中有单元测试。里面有很多测试。每个测试涵盖一个模块。通常,一名开发人员在每个任务中只处理一个或一些模块(但不是很多)。为了提高单元测试速度,我使用了重点规范(我使用 Jasmine,我们的应用是 AngularJS 应用)。

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

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

【问题讨论】:

    标签: javascript angularjs unit-testing


    【解决方案1】:

    我会设置一个 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 钩子在推送之前会在你的脸上尖叫,我认为从根本上解决问题(在开发步骤中不引入观察者和其他进程)。

    0的惊人开发开销为代价。


    编辑:此答案假定您正在使用 grunt 作为任务运行器。有equivalentsforgulp。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2021-10-30
      相关资源
      最近更新 更多