使用UnderscoreJS为AngularJS编写测试

时间:2013-09-18 20:18:34

标签: unit-testing angularjs underscore.js gruntjs karma-runner

我开始学习如何测试Angular应用程序,并遇到了一些问题。

我使用Yeoman生成了一个Angular应用程序。 yo angular --minsafe AppName

然后生成了服务yo angular:service MyService

在服务中写了一个简单的方法,并对它进行测试,以确保一切正常。我跑了grunt test并且测试通过了。

现在它变得有趣了,因为我使用bower install underscore在混合中添加了Underscore,并在<script>中为其添加了index.html标记。 然后我向服务方法添加了一些简单的代码,只是_.map([1,2,3], function(el){return el+1});以查看Underscore是否正常工作。

我再次运行测试grunt test,但未能说明_ is not defined

我认为,因为Underscore将_变量附加到窗口对象,它将可用于测试。我错了吗?

此外,当我在浏览器中运行应用程序时,Underscore已定义并正在运行。

所以,我的问题是,你如何测试使用Underscore的Angular应用程序?这是一个常见问题还是我做错了什么?

谢谢, 斯托

2 个答案:

答案 0 :(得分:9)

如果您看到Yeoman生成的karma.conf.js文件,您会看到不会自动添加凉亭组件。

// list of files / patterns to load in the browser
files = [
  JASMINE,
  JASMINE_ADAPTER,
  'app/bower_components/angular/angular.js',
  'app/bower_components/angular-mocks/angular-mocks.js',
  'app/scripts/*.js',
  'app/scripts/**/*.js',
  'test/mock/**/*.js',
  'test/spec/**/*.js'
];

只需将下划线文件夹添加到它,您就不会有任何问题。

答案 1 :(得分:1)

在2.0之前的Jasmine版本中不推荐使用JASMINEJASMINE_ADAPTER等常量。请改用frameworks: ['jasmine']文件中的karma.conf.js