我正在针对角度控制器外部的方法运行茉莉花单元测试。
运行jasmine会抛出以下错误,
TypeError:无法在testMethod中读取未定义的属性'get'
任何人都可以帮我修复上述错误。谢谢!
Test.js
function testMethod() {
var $http = angular.element('html').injector().get('$http');
$http.get('/testAPI/testCall').success(...);
}
TestSpec.js
it('makes a successful Test call', angular.mock.inject(function ($http, $window) {
testMethod();
}));
JasmineSpecRunner.html
<html>
<head>
<meta charset="utf-8">
<link rel="shortcut icon" type="image/png" href="lib/jasmine_favicon.png">
<link rel="stylesheet" href="lib/jasmine.css">
<script src="lib/jquery-2.1.3.js"></script>
<script src="lib/jasmine.js"></script>
<script src="lib/jasmine-html.js"></script>
<script src="lib/boot.js"></script>
<script src="lib/angular.js"></script>
<script src="lib/angular-mocks.js"></script>
<!-- include source files here-->
<script src="src/Test.js"></script>
<!-- include spec files here-->
<script src="specs/TestSpec.js.js"></script>
</head>
<body>
<div ng-app="SpecRunner" ng-controller="SpecController"></div>
</body>
</html>
PS:我的实施基于这个stackoverflow答案。
答案 0 :(得分:0)
尝试使用角度模拟的httpBackend服务来测试对服务器的ajax调用。
答案 1 :(得分:0)
尝试在testMethod函数中注入$ http ..就像这个testMethod($ http)。
另外,我认为你在这一行中有拼写错误:
<script src="specs/TestSpec.js.js"></script>
它应该是这样的:
<script src="specs/TestSpec.js"></script>