业力测试 Angular 控制器
Karma testing Angular Controller
我已经开始学习如何在控制器上正确测试并遇到以下脚本。
http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html
it('should have a properly working VideosCtrl controller', inject(function($rootScope, $controller, $httpBackend) {
var searchTestAtr = 'cars';
var response = $httpBackend.expectJSONP(
'https://gdata.youtube.com/feeds/api/videos?q=' + searchTestAtr + '&v=2&alt=json&callback=JSON_CALLBACK');
response.respond(null);
var $scope = $rootScope.$new();
var ctrl = $controller('VideosCtrl', {
$scope : $scope,
$routeParams : {
q : searchTestAtr
}
});
}));
我有点困惑...expectedJSON 在以下 API 页面中:
https://docs.angularjs.org/api/ngMock/service/$httpBackend
我很困惑只是想知道这里测试的是什么,我可以看到那里的描述但仍然丢失...这里有什么预期?
与任何单元测试一样,您安排行动然后断言。
对于上面的测试,arrange 和 act 部分是不言自明的,但 assert 部分可能不明显。测试只是验证创建控制器时是否发送了搜索请求。
如果您查看视频控制器的控制器代码
$youtube.query($scope.q, true, function(q, videos) {
$scope.videos = videos;
$scope.onReady();
});
这可以确认。
断言部分由$httpBackend.expectJSONP
完成。此设置告诉 karma 验证是否向特定 url 发出了 GET 请求。这里的 url 是 google 搜索 api,搜索词 cars
。
该测试基本上设置了一个模拟后端并断言它已被调用。
此测试没有明确的断言,但如果构建控制器实例因任何原因抛出异常,它将失败。
请记住,如果断言失败,它会抛出异常。像这样 运行 测试 运行 测试函数:
try {
runTest();
} catch (e) {
markTestFailed(e);
}
因此,如果您的测试代码因任何原因抛出异常,测试将失败。
我已经开始学习如何在控制器上正确测试并遇到以下脚本。
http://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html
it('should have a properly working VideosCtrl controller', inject(function($rootScope, $controller, $httpBackend) {
var searchTestAtr = 'cars';
var response = $httpBackend.expectJSONP(
'https://gdata.youtube.com/feeds/api/videos?q=' + searchTestAtr + '&v=2&alt=json&callback=JSON_CALLBACK');
response.respond(null);
var $scope = $rootScope.$new();
var ctrl = $controller('VideosCtrl', {
$scope : $scope,
$routeParams : {
q : searchTestAtr
}
});
}));
我有点困惑...expectedJSON 在以下 API 页面中:
https://docs.angularjs.org/api/ngMock/service/$httpBackend
我很困惑只是想知道这里测试的是什么,我可以看到那里的描述但仍然丢失...这里有什么预期?
与任何单元测试一样,您安排行动然后断言。
对于上面的测试,arrange 和 act 部分是不言自明的,但 assert 部分可能不明显。测试只是验证创建控制器时是否发送了搜索请求。
如果您查看视频控制器的控制器代码
$youtube.query($scope.q, true, function(q, videos) {
$scope.videos = videos;
$scope.onReady();
});
这可以确认。
断言部分由$httpBackend.expectJSONP
完成。此设置告诉 karma 验证是否向特定 url 发出了 GET 请求。这里的 url 是 google 搜索 api,搜索词 cars
。
该测试基本上设置了一个模拟后端并断言它已被调用。
此测试没有明确的断言,但如果构建控制器实例因任何原因抛出异常,它将失败。
请记住,如果断言失败,它会抛出异常。像这样 运行 测试 运行 测试函数:
try {
runTest();
} catch (e) {
markTestFailed(e);
}
因此,如果您的测试代码因任何原因抛出异常,测试将失败。