使用TypeScript进行角度单元测试:TS2304:找不到名称"模块"

ste*_*evo 8 intellij-idea angularjs typescript

我正在尝试在TypeScript中编写我的第一个Angular单元测试,并且我得到了跟随错误,但无法找出原因.如果有任何想法,请告诉我.

TS2304:找不到名称'模块'.

测试代码:

/// <reference path="../typings/karma-jasmine/karma-jasmine.d.ts" />
/// <reference path="../typings/angularjs/angular-mocks.d.ts" />

describe("FooTest", () => {
    beforeEach(module("app"));

});
Run Code Online (Sandbox Code Playgroud)

我使用TSD(TypeScript定义管理器)来管理我的TypeScript定义.

tsd.json

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "jquery/jquery.d.ts": {
      "commit": "ef32bff4d15782dbbabf99ecb17ba22119cc2bd2"
    },
    "angularjs/angular.d.ts": {
      "commit": "ef32bff4d15782dbbabf99ecb17ba22119cc2bd2"
    },
    "karma-jasmine/karma-jasmine.d.ts": {
      "commit": "ef32bff4d15782dbbabf99ecb17ba22119cc2bd2"
    },
    "jasmine/jasmine.d.ts": {
      "commit": "ef32bff4d15782dbbabf99ecb17ba22119cc2bd2"
    },
    "angularjs/angular-mocks.d.ts": {
      "commit": "ef32bff4d15782dbbabf99ecb17ba22119cc2bd2"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用的是IntelliJ IDEA 14

谢谢,斯特凡

Luc*_*zzi 17

最近Angular团队评论了角度模拟的全球模块

//Use `angular.mock.module` instead of `module`, as `module` conflicts with commonjs.
//declare var module: (...modules: any[]) => any;
Run Code Online (Sandbox Code Playgroud)

为了使您的测试编译,您需要使用完整的命名空间,因此angular.mock.module

例:

beforeEach(function () {
  angular.mock.module('app');
}
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了这个问题,这完美无缺.谢谢! (2认同)

ton*_*ung 6

之前:

beforeEach(function () {
  module('app');
}
Run Code Online (Sandbox Code Playgroud)

后:

beforeEach(function () {
  angular.mock.module('app');
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*bec 0

我猜:

你正在使用angular-mocks.d.ts,但我没有看到angular-mocks.ts任何地方。

d.ts文件仅包含类型定义,而不包含实际的实现。所以你两者都需要。

PS:我认为 angular-mocks.ts 只有 .js 版本:)