2

test/のプロジェクトはモカテストでいっぱいです:

test/
├── a.coffee
└── b.coffee

言う、a.coffeeです

console.log 'Executing A test!'
global.foo = 'FOO'

そしてb.coffee_

console.log 'Executing B test!'
console.log 'Expecting foo not defined:', assert.equal(foo, undefined)

モカを実行する場合:

$ mocha --compilers coffee:coffee-script test/*
Executing A test!
Executing B test!
Expecting foo not defined: false

テストは同じグローバルオブジェクトを共有しているようです(これは避けたいです)...


各テストを個別に実行する方法はありますか?

ありがとうございました。

4

3 に答える 3

1

モカの作者はここでこの質問に答えました:https ://github.com/visionmedia/mocha/issues/365#issuecomment-4997480

于 2012-04-10T08:24:57.730 に答える
0

テストしているコードがグローバルな状態に応じて異なる動作をする場合は、テストの一部としてそれを制御する必要があります。必要なグローバル状態を設定する「beforeEach」関数をコーディングできます。

また、グローバル状態に依存しないようにコードをリファクタリングすることも検討してください。パラメータなど(明示的vs暗黙的)を渡すことができれば、より自信を持ってテストできます。

于 2012-05-19T13:54:21.347 に答える
0

一般に、グローバルな状態はテストを困難にします。googletechtalksによるCleanCodeTalksは、テスト可能なソフトウェアの作成に関心のある人にとっては一見の価値があります。

  1. ユニットテスト
  2. グローバルステートとシングルトン
  3. 物事を探してはいけない
于 2013-02-06T18:22:58.313 に答える