角度单元测试 - 为什么下划线有助于保持代码清洁?他们有必要吗?

时间:2015-05-13 15:14:58

标签: angularjs unit-testing

来自文档:

  

下划线表示法:使用下划线表示法(例如:   _ $ rootScope_)是AngularJS社区中的一种常规广泛传播,用于在测试中保持变量名称的清晰。这就是美元注射器的原因   匹配时,去掉前导和尾随下划线   参数。仅当名称开始时,下划线规则才适用   只有一个下划线结束,否则不会发生替换。

如果有人省略下划线,会发生什么不好的事吗?有人可以帮助解释这是如何更清洁?只是想更好地理解,当我正在审查一个没有使用下划线的通过测试时,我无法向自己解释为什么在这里以及如果省略则会发生任何意外情况。

来自测试的代码片段

 var testScope, rootScope;
 var state,log;

  beforeEach(module('test'));

 beforeEach(inject(function($rootScope, $controller, MonitoringService) {
  testScope = $rootScope.$new();
  rootScope = $rootScope;
  state = $state;
  log = $log;


 testController = $controller('TestController', {
   $rootScope: rootScope,
   $state: state,
   MonitoringService: MonitoringService,
  });

所以在这个测试中(没有复制整个东西)测试通过并注入监控服务。

1 个答案:

答案 0 :(得分:4)

不使用下划线表示法。它就是这样,你可以命名测试变量的名称与注入的东西相同(主要是Angular框架包含的东西)。例如$q

var $q;

beforeEach(inject(function($rootScope, $controller, MonitoringService, _$q_) {
  testScope = $rootScope.$new();
  rootScope = $rootScope;
  state = $state;
  log = $log;
  $q = _$q_;

如果$q在测试类中被命名为q,则可能更难阅读。使用下划线表示法可以使测试保持干净,因为开发人员不必在Angular和本地测试名称之间来回映射。

但是,如果您想要不同的名称,那么就没有冲突,您可以放心地忽略下划线表示法。