这两个不相同吗?
// ONE
describe('something', () => {
const someConst = 'yes'
it('should do something', () => {
// doing something
})
it('should do something else', () => {
// doing something else
})
})
// TWO
describe('something', () => {
let someNotConst
before(() => {
someNotConst = 'yes'
})
it('should do something', () => {
// doing something
})
it('should do something else', () => {
// doing something else
})
})
这是一个人为的例子来证明我的意思。
答案 0 :(得分:2)
我的猜测很简单:在第一种情况下,你阻止线程。在第二种情况下,您可以利用promises(和async / await)来轻松执行异步操作:)
另一个重要的事情是Mocha可以决定在初始化测试和运行测试之间做些什么,或者甚至在初始化之前做一些事情。这在兼容性的未来版本中可能很重要。
最后,它们还为扩展错误处理提供支持,以便您可以更快地发现问题并更快地解决问题。
你能否详细说明你的意思"阻止线程"?
阻止线程意味着您强制引擎同步执行操作,一个操作接着另一个操作。如果你有两个冗长的操作,比如读一个大文件和初始化一个数据库,你必须一个接一个地做,并浪费时间。
在另一种情况下,您可以执行这样的操作,它将并行运行它们并在开始测试之前等待两个操作:
before(() => {
let p1 = readEnormousLogFile();
let p2 = initDatabaseWithAThousandTables();
return Promise.all([p1, p2]);
});