私は現在使用しています:
私のコードは に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
で行われているのには理由があることを指摘しておきます。
ハッピーコーディング!