私は現在使用しています:
私のコードは にsrc/あり、CoffeeScript でテストを書きます。makeコードのビルドとテストに使用します。
make buildの CoffeeScriptsrc/を の JavaScript にコンパイルしますlib/。
make testコードをビルドし、 でテストを実行しますtest/。
make monitorテストが変更されるとすぐにテストを監視して実行します。残念ながら、コードは再コンパイルされません。Vim キーバインディングを使用して を呼び出しますmake。これにより、Mocha がテストを再実行するようになります。
編集:これが気になる場合は、実行できます.coffee --watch -o lib/ -c src/
make coverageは、コード カバレッジ レポートを生成し、それを に配置しlib-cov/report.htmlます。
私Makefileの見た目は次のようになります。
COFFEE = ./node_modules/.bin/coffee --compile
MOCHA = NODE_ENV=test ./node_modules/.bin/mocha
MOCHA_OPTS = \
--compilers coffee:coffee-script \
--require should \
--colors
REPORTER = spec
build:
@$(COFFEE) --output lib/ src/
test: build
@$(MOCHA) --reporter $(REPORTER) $(MOCHA_OPTS)
monitor:
@$(MOCHA) --reporter min $(MOCHA_OPTS) \
--watch --growl
coverage: instrument
@MYLIB_COV=1 $(MOCHA) $(MOCHA_OPTS) \
--reporter html-cov > lib-cov/report.html
instrument: build
@rm -rf ./lib-cov
@jscoverage ./lib ./lib-cov
.PHONY: build test monitor coverage instrument
おそらく、ほとんど変更せずに上記を使用できます。
でカバレッジ レポートを生成するには、 のコードではなくmake coverage、 のインストルメント化されたコードに対してテストを実行する必要があります。これを可能にするためには、次の 3 つのことが必要です。lib-cov/lib/
のMakefileような環境変数を設定する必要がありますMYLIB_COV (名前は好きなように変更してください)。
index.jsこの環境変数を見て、それに応じて次のrequireいずれかlib/を行う必要があります。lib-cov/
// index.js
module.exports = process.env.MYLIB_COV
? require('./lib-cov/mylib')
: require('./lib/mylib');
複数のソース ファイルからのエクスポートが必要な場合は、ここで結合できます。package.json に「main」以外のものがある場合はindex.js、忘れずに変更してください。
テストは次のようにする必要がありrequire '../'ます。
# test/test.user.coffee
describe 'User', ->
User = {}
before ->
{User} = require '../'
describe '#equals()', ->
describe 'when users have the same username and host', ->
it 'should return true', ->
user1 = new User 'user', 'some.host.foo'
user2 = new User 'user', 'some.host.foo'
user1.equals(user2).should.be.true
# etc.
Mockery が必要かどうか、必要な場合はどのように使用するかは、読者の演習として残しておきます。requireただし、上記のテスト スニペットの呼び出しが内部beforeで行われているのには理由があることを指摘しておきます。
ハッピーコーディング!