Javascript单元测试和重构(使用Angularjs框架)
Javascript Unit testing and refactoring (using Angular js framework)
我(作为 js/ng 新手)想知道如何开始我的单元测试之旅以获取以下 angular 代码(具有某些功能的控制器)和必要的模拟?基本上,我想测试 extracted() 函数。将不胜感激美丽的建议。谢谢
angular.module('HelloWorld')
.controller('myCtrl', function ($scope, firstService, secondService, messageService) {
'use strict';
function goWhereTheWindBlows() { // some implementation }
$scope.mainFun = function(var1) {
firstService.showSomething(var1, function() {
var result = secondService.read(var1);
// result is the result of http get (200 or 400)
extracted(result);
}, goWhereTheWindBlows);
function extracted(result) {
result.then(function () {
messageService.addMessage({ message: 'Success', type: 'standard' });
}, function () {
messageService.addMessage({ message: 'Failure', type: 'error' });
});
}
};
});
使用g运行t-karma进行单元测试。
您的结构中应该有测试文件夹。
用 jasmine 语法为此代码编写单元测试。
使用 beforeEach 来使用控制器所在的 module 。
使用 $controller 函数创建变量并为其分配控制器。
使用控制器和 运行 expect 函数获取变量。
就是这样,运行 g运行t test 看看结果。
Some explantation 关于用 jasmine 语法写作。
对于模拟 http 数据 - 与 $http 服务一起使用的数据,请在 angular 中使用 $httpBackend 服务-mocks.js。
这是假的后端,您可以在其中编写例如获取请求,并使用 whenGET() 和 expect 从中指定答案。还有其他请求,如 POST、PUT。基本上在定义结果期望后,您使用 $httpBackend.flush() 方法刷新更改,因此您将检索数据。
还有端到端测试,您可以使用 selenium webdriver 使用 protractor 执行这些测试,但这些很难与g运行t 测试,因此您可以 运行 所有测试作为两个命令。
请注意,端到端测试不是 jasmine 语法,因此您编写它们的方式不同。
我(作为 js/ng 新手)想知道如何开始我的单元测试之旅以获取以下 angular 代码(具有某些功能的控制器)和必要的模拟?基本上,我想测试 extracted() 函数。将不胜感激美丽的建议。谢谢
angular.module('HelloWorld')
.controller('myCtrl', function ($scope, firstService, secondService, messageService) {
'use strict';
function goWhereTheWindBlows() { // some implementation }
$scope.mainFun = function(var1) {
firstService.showSomething(var1, function() {
var result = secondService.read(var1);
// result is the result of http get (200 or 400)
extracted(result);
}, goWhereTheWindBlows);
function extracted(result) {
result.then(function () {
messageService.addMessage({ message: 'Success', type: 'standard' });
}, function () {
messageService.addMessage({ message: 'Failure', type: 'error' });
});
}
};
});
使用g运行t-karma进行单元测试。 您的结构中应该有测试文件夹。 用 jasmine 语法为此代码编写单元测试。 使用 beforeEach 来使用控制器所在的 module 。 使用 $controller 函数创建变量并为其分配控制器。 使用控制器和 运行 expect 函数获取变量。 就是这样,运行 g运行t test 看看结果。
Some explantation 关于用 jasmine 语法写作。
对于模拟 http 数据 - 与 $http 服务一起使用的数据,请在 angular 中使用 $httpBackend 服务-mocks.js。 这是假的后端,您可以在其中编写例如获取请求,并使用 whenGET() 和 expect 从中指定答案。还有其他请求,如 POST、PUT。基本上在定义结果期望后,您使用 $httpBackend.flush() 方法刷新更改,因此您将检索数据。
还有端到端测试,您可以使用 selenium webdriver 使用 protractor 执行这些测试,但这些很难与g运行t 测试,因此您可以 运行 所有测试作为两个命令。
请注意,端到端测试不是 jasmine 语法,因此您编写它们的方式不同。