簡體   English   中英

如何為 RequireJS 項目編寫單元測試

[英]How to write unit test for a RequireJS project

我正在嘗試使用 chai mocha 編寫單元測試,但出現以下錯誤。

ReferenceError:定義未定義

此應用程序是用 TypeScript 編寫的,如果我嘗試創建一些虛擬文件來創建單元測試,它無需任何導入即可正常工作。

單元測試代碼如下

import { expect } from 'chai';
import { MarionetteApp } from '../app/app';

describe("MarionetteApp", () => {
    describe("Add", () => {
        it("Should return 3 when a = 1 and b = 2", () => {
            let calc = new MarionetteApp();

            var result = calc.test();

            expect(result).to.equal("hello");
        });
    });
});

我要為其編寫單元測試的文件是

import { RootView } from './views/RootView';
import { AdvancedCustomController } from './controllers/AdvancedCustomController';
import * as DB from './db/DB';


export class MarionetteApp extends Marionette.Application {

    constructor() {
        super();
    }

    test(){
        return "hello";
    }

    initialize() {
        (<any>window).UXToolApp = this;
    }

    onBeforeStart() {
        //Init controllers
        var advancedCustomizationController = new AdvancedCustomController();

        //Init views
        var rootView = new RootView();
        rootView.render();
    }

}

運行單元測試時,出現以下錯誤

錯誤圖片

tsconfig文件如下

 "version": "1.5.0-beta",
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": true,
        // "module": "commonjs",
        "isolatedModules": true,
        "jsx": "react",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "declaration": true,
        "noImplicitAny": false,
        "removeComments": false,
        "noLib": false,
        "preserveConstEnums": true,
        "suppressImplicitAnyIndexErrors": true,
        "rootDir": "./app",
        "moduleResolution" : "node"
    },

package.json 在下面

{
  "name": "design_mode",
  "version": "1.0.0",
  "description": "",
  "main": "scripts/designMode.ts",
  "directories": {
    "test": "test"
  },
  "dependencies": {
    "amd-loader": "^0.0.8",
    "amdefine": "^1.0.1",
    "chai": "^4.1.2",
    "mocha": "^5.0.3",
    "requirejs": "^2.3.5",
    "ts-node": "^5.0.1",
    "ws": "^0.4.32"
  },
  "devDependencies": {
    "del": "^2.0.0",
    "gulp": "^3.9.0",
    "gulp-less": "^3.0.3",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^1.6.0",
    "gulp-tslint": "^3.2.0",
    "gulp-typescript": "^2.8.1",
    "gulp-util": "^3.0.6",
    "less": "^2.5.1",
    "tsd": "^0.6.4",
    "typescript": "^2.7.2"
  },
  "scripts": {
    "test": "./node_modules/.bin/mocha --compilers ts:ts-node/register ./test/*.spec.ts",
    "server": "cd server && node server.js",
    "build": "gulp"
  },
  "author": "",
  "license": "ISC"
}

轉到項目根目錄並安裝 amd-loader 模塊並嘗試運行以下命令,此問題將得到解決。

node node_modules/mocha/bin/mocha --require ts-node/register -r amd-loader --timeout=0 tests/**/*.ts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM