如何为 Jasmine/Angular 创建一个帮助程序来组合多个 beforeEach
How do I create a helper for Jasmine/Angular to combine multiple beforeEach's
我一直在我的规范文件中重复一些代码,这些代码注入了一个模板,然后编译它。 我将此代码提取到一个辅助函数中以保持干燥。 我相信问题在于试图在辅助函数中放置 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>');
在我的帮助程序函数结束时,一切看起来都不错,但是当我跳到我的it
块时,一切都是未定义的。 我可以提取多个beforeEach
吗? 正确的方法是什么? 另外,放置茉莉花辅助功能的正确位置在哪里,如何完成?
您可以通过在特定描述函数的上下文之外编写全局 beforeEach() 函数来创建它们。你应该创建一个具有这些函数的规范助手.js类,并通过 Karma 配置加载它。
请注意,beforeEach 函数将在您运行的任何 it 函数之前执行(因为它们是全局的)。
我创建了一个小提琴来演示,但是 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);
});
});
相关文章:
- {{#each}}内部的Handlebar帮助程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- 在AngularJS中的另一个ng应用程序中使用来自一个ng程序的Cookie值
- Handlebars帮助程序未获取变量的值
- 如何从浏览器中获取cookie,从另一个应用程序中删除
- 将两个express应用程序封装在一个应用程序中
- Node Express Handlebars帮助程序未返回函数的结果
- 如何让应用程序帮助程序方法在发送的请求为 JS 格式时工作
- 从帮助程序异步返回值
- 无法使用模板帮助程序设置正文类
- 在呈现模板之前调用帮助程序
- 花式框 V2 按钮帮助程序冲突
- 在帮助程序处获取对象值的车把,无需使用数据进行编译
- 我正在用java脚本编写一个hangman程序,如果玩家失败了,我需要帮助来显示这个词
- 如何为 Jasmine/Angular 创建一个帮助程序来组合多个 beforeEach
- Meteor.js:如何将一个帮助程序的数据上下文传递给另一个帮助程序
- 如何在javascript中编写一个帮助程序,用于将数组和字符串相乘
- 如何在另一个自定义帮助程序中调用一个自定义辅助程序函数
- 调用同一模板帮助程序对象中的另一个属性
- 一个帮助数据隐藏在模块化下的JavaScript连接程序