原文地址:https://themeteorchef.com/blog/meteor-1-3-from-a-20-000-foot-view/
Meteor 1.3新增的NPM支持能夠幫助開發(fā)者構(gòu)建更加模塊化的應(yīng)用灵奖,但是假如我們不能保證應(yīng)用按照我們的需求工作竖般,那么這將毫無意義竿痰。我們需要開發(fā)新特性和重構(gòu)代碼,并且對這些工作有足夠的信心。所以自動化測試是成功的關(guān)鍵躯畴。Meteor 1.3對模塊的測試給予我們一個官方的回應(yīng)」酰現(xiàn)在開發(fā)者能夠?qū)⑺麄兊拇a分割成更小,更容易維護(hù)的小片段屉来,他們現(xiàn)在就可以更高效地測試應(yīng)用了路翻。
之前,由Xolv.io開發(fā)的Velocity被推薦為測試Meteor應(yīng)用的官方解決方案茄靠。但是Xolv.io停止開發(fā)了Velocity茂契,然后把開發(fā)官方測試工具的責(zé)任交給了MDG】看起來他們給出了測試Meteor應(yīng)用的非常棒的解決方案掉冶。
測試如何工作真竖?
Meteor 1.3的測試文件有一個特殊的后綴名.tests.js
,并且它們能在任何文件夾下厌小。這里是一個簡單的單元測試?yán)踊止玻谖覀冎暗哪Kcat-stuff.js
:
import { mocha } from 'meteor/avital:mocha';
import { chai, assert } from 'meteor/practicalmeteor:chai';
import laserPointer from './cat-stuff.js';
describe( 'Cat Stuff', () => {
it( 'draws a laser pointer\'s position as a number', () => {
let laser = laserPointer();
assert.typeOf( laser.position, 'number' );
});
});
盡管不是必須的,這里我們導(dǎo)入practicalmeteor:chai
擴展包到我們的測試文件讓我們能夠獲得Chai assertion library璧亚。Mocha有它自己的assertion library讨韭,但是一些開發(fā)者更傾向于使用Chai。他們都能完成工作癣蟋!這里拐袜,我們期望laserPointer()
犯法返回一個對象,其中的position
參數(shù)是一個數(shù)字類型梢薪,使用Chai的assert.typeOf()
方法蹬铺,我們可以確認(rèn)這點。
如何運行測試
目前秉撇,測試需要兩步來完成甜攀,首先,像往常一樣運行你的應(yīng)用:
meteor
然后在另一個端口上運行測試匯報(假設(shè)這里應(yīng)用運行端口為3000)
meteor test --driver-package avital:mocha --port 3100
瀏覽器打開http://localhost:3100
琐馆,你應(yīng)該看到一個報表展示了你的測試规阀。一個好消息是,這里的測試是響應(yīng)式的瘦麸。如果你修改了測試的代碼或是應(yīng)用的代碼谁撼,測試會自動重新運行。這和Velocity的方法類似滋饲,如果你有時間的話厉碟,可以較為平滑地將測試按照官方解決方案遷移。
The Meteor Guide’s (draft) article on testing講解了對于許多不同類型測試的支持屠缭,比如單元測試箍鼓,集成測試,驗收測試/端到端測試呵曹,負(fù)載測試款咖。目前測試只能用Mocha來寫 (using the avital:mocha
package),但在未來不會有這些限制奄喂。