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 时:

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

看起来测试共享相同的全局对象(我想避免)......


有没有办法单独执行每个测试?

谢谢你。

4

3 回答 3

1

Mocha 的作者在这里回答了这个问题:https ://github.com/visionmedia/mocha/issues/365#issuecomment-4997480

于 2012-04-10T08:24:57.730 回答
0

如果您正在测试的代码的行为取决于某些全局状态,那么您必须在测试中对其进行控制。您可以编写一些“beforeEach”函数来设置您需要的任何全局状态。

您可能还想考虑重构代码,使其不依赖于全局状态。如果您可以传递参数或其他东西(显式与隐式),那么您可以更有信心地进行测试。

于 2012-05-19T13:54:21.347 回答
0

全局状态通常使测试变得困难。googletechtalks 的 Clean Code Talks 值得任何有兴趣编写可测试软件的人观看

  1. 单元测试
  2. 全局状态和单例
  3. 不要寻找东西
于 2013-02-06T18:22:58.313 回答