Javascript 使用typescript在jasmine测试中注入$http失败

Javascript 使用typescript在jasmine测试中注入$http失败,javascript,angularjs,http,typescript,inject,Javascript,Angularjs,Http,Typescript,Inject,我们正在开发一个用Typescript驱动的程序测试。 这是我们对茉莉花的测试: import IDifferentialPilotService = DifferentialPilot.IDifferentialPilotService; import Ev3DifferentialPilotService = DifferentialPilot.Ev3DifferentialPilotService; import IHttpService = ng.IHttpService; descr

我们正在开发一个用Typescript驱动的程序测试。 这是我们对茉莉花的测试:

import IDifferentialPilotService = DifferentialPilot.IDifferentialPilotService;
import Ev3DifferentialPilotService = DifferentialPilot.Ev3DifferentialPilotService;
import IHttpService = ng.IHttpService;

describe("restClientService integration test: ", function () {

    // sut
    var ev3DifferentialPilotService: IDifferentialPilotService;

    //doc
    var http: IHttpService;

    beforeAll(function () {
        angular.mock.inject(function ($http: IHttpService) {
            this.http = $http;
        });
        ev3DifferentialPilotService = new Ev3DifferentialPilotService(http);
    });

    it("robot should run 5 m", function () {
expect(ev3DifferentialPilotService.runDistance(5)).toBe("success");

    });

}); 
测试的类
Ev3DifferentialPilotService
如下所示:

namespace DifferentialPilot {
    "use strict";

    import IHttpService = ng.IHttpService;

    export class Ev3DifferentialPilotService implements IDifferentialPilotService {
        private http: IHttpService;

        static $inject = ['$http'];
        constructor($http: IHttpService) {
            this.http = $http;
        }

        public runDistance(runDistance: number): string {
            this.http({
                method: "POST",
                url: "10.0.0.44:8080/differentpilot/run/5"
            }).then(function successCallback(response: any) {
                return "success";
            }, function errorCallback(response: any) {
                return "error";
            });

            return undefined;
        }
    }
} 
{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  } 
如您所见,我们希望在测试中注入
$http
-服务,以便
Ev3DifferentialPilotService
可以检索http服务作为参数,并在其
运行距离
-方法中使用它。 当我们在
Ev3DifferentialPilotService
中记录
this.$http
-对象时,我们得到
未定义的
,这意味着注入失败。根据这一点,测试也失败了

Im将EV3DDifferentialPilotService注册为
App.js中的服务

var app = angular.module("AngularDifferentialPilotModule", []);
app.service("ev3DifferentialPilotService", DifferentialPilot.Ev3DifferentialPilotService); 
我们在karam.conf.js中使用了所有这些东西:

// Karma configuration
// Generated on Thu Dec 17 2015 14:02:38 GMT+0100 (Mitteleuropäische Zeit)

module.exports = function (config) {
    config.set({

        // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: '',


        // frameworks to use
        // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ['jasmine'],


        // list of files / patterns to load in the browser
        files: [
            "bower_components/angular/angular.js",
            "bower_components/angular-mocks/angular-mocks.js",
            "src/Ev3DifferentialPilotService.js",
            "spec/*.spec.js",
            "src/app.js"
        ],

        // list of files to exclude
        exclude: [],


        // preprocess matching files before serving them to the browser
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: {},


        // test results reporter to use
        // possible values: 'dots', 'progress'
        // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ['progress'],


        // web server port
        port: 9876,


        // enable / disable colors in the output (reporters and logs)
        colors: true,


        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_INFO,


        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: false,


        // start these browsers
        // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: ['Firefox'],


        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: false,

        // Concurrency level
        // how many browser should be started simultanous
        concurrency: Infinity
    })
}
此外,我们正在使用一个tsconfig,它看起来像:

namespace DifferentialPilot {
    "use strict";

    import IHttpService = ng.IHttpService;

    export class Ev3DifferentialPilotService implements IDifferentialPilotService {
        private http: IHttpService;

        static $inject = ['$http'];
        constructor($http: IHttpService) {
            this.http = $http;
        }

        public runDistance(runDistance: number): string {
            this.http({
                method: "POST",
                url: "10.0.0.44:8080/differentpilot/run/5"
            }).then(function successCallback(response: any) {
                return "success";
            }, function errorCallback(response: any) {
                return "error";
            });

            return undefined;
        }
    }
} 
{
  "compilerOptions": {
    "module": "commonjs",
    "noImplicitAny": true,
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  } 

那么错误在哪里呢?有人能帮我吗?

你以前不能注射
()

功能已打开(),但尚未合并