$提供一个以上的值来测试一个描述
$provide more than 1 value to test in a describe
我有一个Angular指令的Karma/Jasmine测试:
describe('placeholder directive', function() {
// Bindable members
var element;
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return false;
});
}));
// Bind references to global variables
beforeEach(inject(function($compile, $rootScope) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
它像我想要的那样工作。但是,我将PlaceholderSupportService()
的值强制设置为false
。我想运行第二个测试,我有这个值为true
。我似乎无法在it
语句中访问$provide
,那么我该如何做到这一点?
您可以告诉PlaceholderSupportService
返回一个变量。然后,在测试块中,更改变量的值。这应该能解决问题。下面是示例:
describe('placeholder directive', function() {
// Bindable members
var element;
var providerResult = false; //Here is the variable that you will change.
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return providerResult;
});
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is supported', inject(function($timeout) {
providerResult = true; //Here I will change the result of my PlaceholderSupportService
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
您可以简单地重新构建您的测试,为每个it
提供一个beforeEach
。这段代码可能可以稍微清理一下,但这里有一个想法。
describe('placeholder directive', function () {
// Bindable members
var element;
describe('when placeholder is supported', function () {
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return true;
});
}));
// Bind references to global variables
beforeEach(inject(function($compile, $rootScope) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
describe('when placeholder is not supported', function () {
// Load module
beforeEach(angular.mock.module('app'));
// Mock service response
beforeEach(module(function($provide) {
$provide.value('PlaceholderSupportService', function() {
return false;
});
}));
// Bind references to global variables
beforeEach(inject(function($compile, $rootScope) {
element = $compile('<input name="test" placeholder="Test" />')($rootScope);
$rootScope.$digest();
}));
// Check the correct HTML is rendered
it('Renders placeholder as input value when placeholder is not supported', inject(function($timeout) {
$timeout.flush();
expect(element[0].value).toBe('Test');
}));
});
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如果有's是一个名为“”的全局函数;描述“;或“;它“;当使用诸如jasmine或mocha之类的测试框架时
- 鼠标滚轮按压-描述了一个事件的名称,以及如何使用jQuery侦听它
- 为什么广播在文档中被描述为标志,而它实际上是一个对象
- 制作一个简单的JavaScript滑块,我将如何为我的图像添加描述
- 如何跳到下一个下一个描述摩卡中的错误
- 你如何用ES5(2)来描述一个元素
- 在JavaScript中,是否有一个词来描述可json序列化的对象
- 如何检测一个html元素是否可以被选择器描述
- 设计问题:如何设计一个网页,应该显示11个元素,每个元素都有一个描述
- 如何改变默认的facebook页面的描述/标题/图片时,共享一个页面
- 每个文件强制执行一个描述
- $提供一个以上的值来测试一个描述
- Ckeditor插件对话框选择从选定的一个获取描述
- ES7装饰器规范是否要求描述符有一个“initializer”方法?
- 我想开发一个网页,给出描述中提到的输出
- ajax表单只向第一个id提交空白描述
- 我正在使用 auth0 进行用户身份验证,并且我有一个用于 CRUD 帖子(标题、图像、描述)的 API.如何对 CRU