Javascript Angularjs-测试中未定义Jasmine范围变量

Javascript Angularjs-测试中未定义Jasmine范围变量,javascript,angularjs,jasmine,karma-jasmine,Javascript,Angularjs,Jasmine,Karma Jasmine,我正在尝试测试我的angularjs代码 我的控制员是个傻瓜 'use strict'; (function() { angular.module('myApp') .controller('TestController', function($scope, $http, Auth, myService, $state) { try{ $scope.testVar = "Hello"; }catch(e){

我正在尝试测试我的angularjs代码

我的控制员是个傻瓜

'use strict';
(function() {
     angular.module('myApp')
    .controller('TestController', function($scope, $http, Auth, myService, $state) {
        try{
              $scope.testVar  = "Hello";
        }catch(e){
           console.log(e);
        }
     });
});
我的测试代码如下:

'use strict';

 describe('Controller: TestController', function () {

     beforeEach(module('myApp'));

     var TestController, scope;

     beforeEach(inject(function ($controller, $rootScope) {
        scope = $rootScope.$new();

        TestController = $controller('TestController', {
             $scope: scope
        });
      }));

     it('should testVar to be defined', function () {
       expect(scope).toBeDefined();
       expect(scope.testVar).toBeDefined();
      });
});
当我运行它时,它没有通过测试,因为
预期未定义。

我不知道我做错了什么


我已经检查了很多帖子,但还没有解决。

问题可能与变量声明有关。您已经声明了ManualBookingController,但随后对$controller行使用TestController。将ManualBookingController更改为TestController,看看是否有效。

问题可能与变量声明有关。您已经声明了ManualBookingController,但随后对$controller行使用TestController。将ManualBookingController更改为TestController,看看是否有效。

我几乎按原样处理了您的代码,将其放入a中,测试通过。我认为您的案例中可能缺少的是,在测试套件中使用
$controller
创建模拟控制器时,控制器中存在一些依赖项,但这些依赖项没有被模拟。我从你原来的控制器上移除了它们(现在),它工作得很好

为了模拟
$state
(提供者)和其他服务,您可以查看此内容并阅读相关内容


此外,请记住,分享问题的确切细节非常重要。当我使用您的确切代码运行您的测试套件时,它首先给了我以下错误:


Error:[$injector:unpr]未知提供程序:$stateProvider我几乎按原样接受了您的代码,将其放在一个测试中,测试通过了。我认为您的案例中可能缺少的是,在测试套件中使用
$controller
创建模拟控制器时,控制器中存在一些依赖项,但这些依赖项没有被模拟。我从你原来的控制器上移除了它们(现在),它工作得很好

为了模拟
$state
(提供者)和其他服务,您可以查看此内容并阅读相关内容


此外,请记住,分享问题的确切细节非常重要。当我使用您的确切代码运行您的测试套件时,它首先给了我以下错误:


错误:[$injector:unpr]未知提供程序:$stateProvider而不是'scope',尝试'TestController.scope',然后它说'TypeError:'undefined'不是对象`console.log(e)将错误记录到浏览器中-您在测试中不会看到该错误。您可以尝试使用alert:alert(“发生错误:”+e)进行调试,这将输出错误到您在测试中看到的输出。console.log(e)中没有任何问题,这是控制器代码,工作正常。我的测试代码有问题,当我运行
karma start karma.conf.js
时,它会给出测试结果。在运行测试用例时,通过放置记录器,你能检查你的实际控制器代码是否正在执行吗?请尝试“TestController.scope”而不是“scope”,然后它会显示“TypeError:“undefined”不是对象“console.log(e)将错误记录到浏览器-您将不会在测试中看到该错误。您可以尝试使用alert:alert(“发生错误:”+e)进行调试,这将输出错误到您在测试中看到的输出。console.log(e)中没有任何问题,这是控制器代码,工作正常。我的测试代码有问题,当我运行
karma start karma.conf.js
时,它会给出测试结果。在运行测试用例时,通过放置记录器,你能检查你的实际控制器代码是否正在执行吗?对不起,这是我的输入错误,我更正了,仍然不起作用对不起,这是我的输入错误,我更正了,还是不行