javascript – 如何为Jasmine / Angular创建一个帮助来组合多个beforeEach

我在我的spec文件中重复一些注入模板的代码,然后进行编译。我把这个代码提取成一个帮助函数来保持事情的干燥。我相信这个问题在于试图把它放在beforeEach的帮助函中。这是我正在尝试抽象成一个函数的代码片段:

  beforeEach(module('app/views/header.html'));

  beforeEach(inject(function($templateCache, $compile, $rootScope) {
    template = $templateCache.get('app/views/header.html');
    $templateCache.put('views/header.html', template);
    var directive = angular.element('<clinical-header></clinical-header>');
    element = $compile(directive)($rootScope);
    $rootScope.$digest();
  }));

这是我创建的帮助函数:

var setupTemplate = function(templateName, element) {
  beforeEach(module('app/views/' + templateName));
  beforeEach(inject(function($templateCache, $compile, $rootScope) {
    var template = $templateCache.get('app/views/' + templateName);
    $templateCache.put('views/' + templateName, template);
    var directive = angular.element(element);
    element = $compile(directive)($rootScope);
    $rootScope.$digest();
  }));

现在这是对助手功能的调用:

setupTemplate('header.html', '<clinical-header></clinical-header>');

在我的帮助功能结束时,一切都看起来不错,但是当我跳到我的屏幕时,一切都是未定义的。我可以提取多个beforeEach吗?这样做的正确方法是什么?另外,放置茉莉花助手功能的适当位置在哪里呢?

您可以通过将它们写入特定描述函数的上下文来创建全局beforeEach()函数。
您应该使用这些函数创建一个spec-helper.js类,并通过Karma配置加载它。

请注意,beforeEach函数将在运行任何函数之前执行(因为它们是全局函数)。

我创建了一个fiddle来演示,但是Karma的关键是将文件添加到配置中,以便它被浏览器加载。

规格助手:

var myGlobal;
beforeEach(function() {
    // This will run before any it function.
    // Resetting a global state so the change in this function is testable
   myGlobal = 10
});

测试套件:

describe('first suite', function(){
   it('is a test', function(){
     expect(myGlobal).toBe(10);
     // Reset the value to show that beforeEach is executed for each it function
     myGlobal = 20;
     expect(myGlobal).toBe(20);
  });

  it('is another test', function($location){
     expect(myGlobal).toBe(10);
     myGlobal = 20;
     expect(myGlobal).toBe(20);
  });
});
http://stackoverflow.com/questions/19563130/how-do-i-create-a-helper-for-jasmine-angular-to-combine-multiple-beforeeachs

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 如何为Jasmine / Angular创建一个帮助来组合多个beforeEach