如何重置单元测试?
How to reset unit test?
我有一个如下所示的单元测试:
describe('myDirective:', function () {
var rootScope, compile;
beforeEach(module('myApp'));
beforeEach(function () {
//inject dependencies
inject(function ($compile, $rootScope) {
rootScope = $rootScope;
compile = $compile;
});
});
it('first test', function () {
var scope = rootScope.$new();
var element = angular.element('<my-directive><div id="myid" style="height:300px"></div></my-directive>');
element.appendTo(document.body);
element = compile(element)(scope);
console.log("#myid height: "+$("#myid").height());
expect($("#myid").height()).toBe(300);
});
it('second test', function () {
var scope = rootScope.$new();
var element = angular.element('<my-directive><div id="myid" style="height:400px"></div></my-directive>');
element.appendTo(document.body);
element = compile(element)(scope);
console.log("#myid height: "+$("#myid").height());
expect($("#myid").height()).toBe(400);
});
});
它通过了 first test
,但在 second test
上失败了。 second test
将始终 return 与 first test
中设置的高度相同。我该如何重置它?
由于您要将元素附加到正文,因此您也需要手动将其删除。
将此行添加到每个测试的末尾
element.remove();
它应该可以工作。
或者,您可以使用 Jasmine 中提供的 afterEach()
函数。它似乎等同于 Python 的 unittest
模块中的 tearDown()
,因为 afterEach()
在每次测试后执行。
通过使用afterEach()
功能,您只需指定一次清理工作。
您可以在 Jasmine's introduction documentation page.
上阅读有关 afterEach()
(以及 beforeEach()
等类似功能)的更多信息
我有一个如下所示的单元测试:
describe('myDirective:', function () {
var rootScope, compile;
beforeEach(module('myApp'));
beforeEach(function () {
//inject dependencies
inject(function ($compile, $rootScope) {
rootScope = $rootScope;
compile = $compile;
});
});
it('first test', function () {
var scope = rootScope.$new();
var element = angular.element('<my-directive><div id="myid" style="height:300px"></div></my-directive>');
element.appendTo(document.body);
element = compile(element)(scope);
console.log("#myid height: "+$("#myid").height());
expect($("#myid").height()).toBe(300);
});
it('second test', function () {
var scope = rootScope.$new();
var element = angular.element('<my-directive><div id="myid" style="height:400px"></div></my-directive>');
element.appendTo(document.body);
element = compile(element)(scope);
console.log("#myid height: "+$("#myid").height());
expect($("#myid").height()).toBe(400);
});
});
它通过了 first test
,但在 second test
上失败了。 second test
将始终 return 与 first test
中设置的高度相同。我该如何重置它?
由于您要将元素附加到正文,因此您也需要手动将其删除。
将此行添加到每个测试的末尾
element.remove();
它应该可以工作。
或者,您可以使用 Jasmine 中提供的 afterEach()
函数。它似乎等同于 Python 的 unittest
模块中的 tearDown()
,因为 afterEach()
在每次测试后执行。
通过使用afterEach()
功能,您只需指定一次清理工作。
您可以在 Jasmine's introduction documentation page.
上阅读有关afterEach()
(以及 beforeEach()
等类似功能)的更多信息