2017-05-19 110 views
0

我想從bash運行單元測試來使用mocha和mocha-jsdom測試我的Typescript生成的Javascript類。我正在使用mocha-jsdom,因爲我想在我的測試中模擬dom,但從bash運行單元測試。使用node.js,Mocha和mocha-jsdom測試Typescript生成的類?

我見過幾個例子,他們在瀏覽器中使用mocha的前端測試框架,但我還沒有看到它們從bash運行的位置。

看來我無法在我的摩卡單元測試中包含從Typescript生成的Javascript類。

var jsdom = require('../../index'); 
require('../../src/js/acct/AccountManager.js'); 

describe('GenerateHTML', function() { 
    describe('#generateHTML()', function() { 

    jsdom() 

    it('should generate a table', function() { 
     var vahm = new VerticalAccountHTMLManager(document, "testId"); 

     expect($("#testId")[0]).eql("table"); 
    }); 
    }); 
}); 

有沒有什麼辦法可以將創建類的函數導入摩卡單元測試,同時仍然從bash運行它?

+0

有兩個問題:爲什麼使用TypeScript,但是您是否直接測試生成的JavaScript代替TypeScript?那麼爲了執行測試,設置一個由bash文件觸發的nodejs應用程序呢? – quirimmo

+0

@quirimmo「誰使用TypeScript,但是使用生成的Javascript而不是TypeScript直接進行測試?」因爲我不知道這是一個選項。 「那麼爲了執行測試,怎樣設置由bash文件(shell腳本)觸發的節點js應用程序?」我只是想運行我的測試。 – leeand00

+0

好點:D提供一些可用的代碼和例子的答案:) – quirimmo

回答

1

那麼讓我們從執行測試開始。 對於執行測試你有幾種選擇:

  • 使用karma。 Karma是一名JavaScript測試專家。實際上,您在karma.config.js文件中指定了要執行的所有測試,並且它將執行所有測試。您還擁有一個watch功能,該功能允許您在每次更改代碼時執行測試。
  • 使用node.js.在package.json文件的腳本屬性中,您可以指定命令test,並將該命令與該腳本相關聯,以對所有測試執行摩卡。然後你可以運行測試只需輸入npm test
  • 如果你想使用bash,我的建議是使用它來觸發npm測試命令或karma命令。這是通過bash啓動測試最簡單的方法。你也可以在Win上設置一個.bat文件,它通過npm/karma命令運行你的測試。
  • 使用任務運行器爲Gulp,Grunt等...你可以指定一個任務,在其中觸發你的測試,然後運行任務提供例如命令gulp mytask

我的建議是直接使用node.js。它使事情變得更容易。

關於TypeScript,您可以直接在TypeScrit中使用mocha,不需要JavaScript。我建議你把摩卡與柴,柴,諾言和sinon結合起來。柴是一個斷言庫。 Chai-as-promised允許您測試promise和sinon來測試函數和方法。

這就是我上面說的package.json與測試命令的例子:

"scripts": { 
    "test": "find ./src -name '*spec.ts' | xargs mocha -r ts-node/register" 
} 

這條線,你將執行所有這一切結束了*spec.ts的文件。 的TS-節點是一個非常有用的節點插件,它允許您直接通過命令來運行TS ts-node myfile.ts

關於依賴於你的package.json這裏有一個有用的清單:

"devDependencies": { 
     "@types/chai": "^3.5.0", 
     "@types/chai-as-promised": "^0.0.30", 
     "@types/mocha": "^2.2.40", 
     "@types/node": "^7.0.12", 
     "@types/sinon": "^2.1.2", 
     "chai": "^3.5.0", 
     "chai-as-promised": "^6.0.0", 
     "husky": "^0.13.3", 
     "mocha": "^3.2.0", 
     "sinon": "^2.1.0", 
     "ts-node": "^3.0.2", 
     "typings": "^2.1.1" 
} 

關於如何整合摩卡你的測試裏面,這裏是一個規範文件,可以作爲圖案使用的聲明:

// imports of testing libraries 
import * as mocha from 'mocha'; 
import * as chai from 'chai'; 
import * as chaiAsPromised from 'chai-as-promised'; 
import sinon = require('sinon'); 
// import of the source files to be tested 
import Main from './Main'; // an example 

// testing inits 
chai.use(chaiAsPromised); 
const expect = chai.expect; 
const assert = chai.assert; 
const should = chai.should(); 

你可以嘗試看看這個回購協議。有一個非常簡單的TypeScript項目和我上面提到的所有測試庫。它仍在進行中,我沒有時間完成它,所以主README.md也沒有更新。 但是,如果你克隆項目或下載源代碼,你可以有一個真正的全景所有我上面說的事情和所有你可以在你的測試中使用的方法的說明:

https://github.com/quirimmo/testing-typescript-mocha-chai-sinon

希望這個幫助!任何查詢讓我知道!

相關問題