8

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

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

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

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

现在它变得有趣了,因为我在混音中添加bower install underscore了下划线,并<script>index.html. 然后我在 service 方法中添加了一些简单的代码,只是_.map([1,2,3], function(el){return el+1});为了看看 Underscore 是否工作。

我再次进行了测试grunt test,但它没有说出来_ is not defined

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

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

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

谢谢, 佩塔

4

2 回答 2

9

如果你看到karma.conf.jsYeoman 生成的文件,你会看到没有自动添加 bower 组件。

// 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'
];

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

于 2013-09-18T21:11:09.600 回答
1

在 Jasmine 2.0 之前的版本中不推荐使用类似JASMINEor的常量。改为在文件中JASMINE_ADAPTER使用。frameworks: ['jasmine']karma.conf.js

于 2014-05-22T13:36:02.850 回答