使用 yeoman 的 ReSharper Jasmine AngularJS 单元测试

Posted

技术标签:

【中文标题】使用 yeoman 的 ReSharper Jasmine AngularJS 单元测试【英文标题】:ReSharper Jasmine AngularJS unit-test using yeoman 【发布时间】:2014-01-11 17:46:48 【问题描述】:

我正在尝试使用 Resharper 8.0.2 让 yeoman 生成的单元测试在 Visual Studio 中运行。

使用 yeoman,如果你只是生成一个控制器,你会得到这样的东西:

'use strict';

describe('Controller: MainCtrl', function () 

  // load the controller's module
  beforeEach(module('angularYeomanTestApp'));

  var MainCtrl,
    scope;

  // Initialize the controller and a mock scope
  beforeEach(function() 
      inject(function($controller, $rootScope) 
          scope = $rootScope.$new();
          MainCtrl = $controller('MainCtrl', 
              $scope: scope
          );
      )
  );

  it('should attach a list of awesomeThings to the scope', function () 
    expect(scope.awesomeThings.length).toBe(3);
  );
);

我已经把this post的知识转移了,因为yeoman在inject语句之前没有生成匿名函数。

问题是我总是在每个测试中遇到错误,例如:

Inconclusive: Test wasn't run

Resharper 配置为使用 chrome 浏览器运行测试,并且 jasmine 在打开时似乎已正确包含在测试页面中,但测试页面为空!

使用 karma 运行测试,例如咕噜测试确实有效!

感谢您的帮助!

PS.:我正在使用:Visual-Studio-2013、Resharper 8.0.2、angularjs 1.2.6

【问题讨论】:

这是您的完整测试吗?您是否包含了对所有需要的 js 文件的引用?使用 resharper 为了运行测试,您必须在包含测试之前引用所有 js 文件。如果您拖动它们,vs 将为您创建它们。类似 /// 是的,这是完整的测试。 Karma 配置为将大约 15 个文件或其他内容加载到浏览器中。我应该手动添加它们吗? 【参考方案1】:

Karma 和 Reshaper 彼此无关。您不必运行或安装 karma 即可运行 Resharper 测试。对于更清晰的测试,您必须拥有,正如我在上面的评论中指出的那样,您需要在每个测试文件中包含作为“参考”的所有文件。

【讨论】:

是否有可能包含所有测试的标准参考集? @Sentenza:是的,***.com/questions/3448119/… 我没有让它工作。我的参考文件包括 angular、jasmin 和要测试的服务以及 app.js 文件。但是还是不行……

以上是关于使用 yeoman 的 ReSharper Jasmine AngularJS 单元测试的主要内容,如果未能解决你的问题,请参考以下文章

Yeoman 官网教学案例:使用 Yeoman 构建 WebApp

Writeup | SCTF2018 |CTF 比赛 |By Jas502n

使用Yeoman搭建React项目

前端工程化系列[06]-Yeoman脚手架核心机制

yeoman编写自己的脚手架

为啥使用 Yeoman 的生成器而不是 Maven 的原型?