0

次のファイルがあります。

MyClass.ts

/// <reference path="node_modules/phaser/typescript/phaser.d.ts" />
export class MyClass {
    d: Phaser.Sprite;
    constructor() {
        this.d = new Phaser.Sprite(new Phaser.Game, 10, 10);
    }
    win() : boolean {
        return true;
    }
}

test.ts

/// <reference path="../typings/mocha/mocha.d.ts" />
import MyModule = require('../MyClass'); 

describe('MyClass', () => {   
    var subject : MyModule.MyClass;

    beforeEach(function () {
        subject = new MyModule.MyClass();
    });

    describe('#win', () => {
        it('should pass', () => {
            var result : boolean = subject.win();
            if (result !== true) {
                throw new Error('Expected true but was ' + result);
            }
        });
    });
});

tsdを使用してプルし、 ts-nodemocha.d.tsを使用してノードで typescript を実行しているので、次のように mocha を実行します。

mocha --compilers ts:ts-node/register

コンパイルは成功しますが、Phaser が定義されていないため、実行時にテストが失敗します。

MyClass
    #win
      1) "before each" hook for "should pass"


  0 passing (47ms)
  1 failing

  1) MyClass "before each" hook for "should pass":
     ReferenceError: Phaser is not defined
      at new MyClass (c:\Users\stafford\Documents\git\ts-node-test\MyClass.ts:5:22)
      at Context.<anonymous> (c:\Users\stafford\Documents\git\ts-node-test\test\test.ts:8:19)
      at callFn (C:\Users\stafford\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:286:21)
      at Hook.Runnable.run (C:\Users\stafford\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:279:7)
      at next (C:\Users\stafford\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:297:10)
      at Immediate._onImmediate (C:\Users\stafford\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:319:5)

その場合、このようなことをしなければならないと思いました。

import Phaser = require('phaser');

しかし、これにより、phaser.d.tsのエラーでコンパイルが中断されます。

phaser.d.ts はモジュールではありません。

このようなテストをコマンドラインから実行するにはどうすればよいですか?

再現

4

1 に答える 1