我最近读到
this article
单元测试反应。
在其中,作者使用如下语法:
describe('ClickCounter component', async assert => {
const createCounter = clickCount =>
render(<ClickCounter clicks={ clickCount } />)
;
{
const count = 3;
const $ = createCounter(count);
assert({
given: 'a click count',
should: 'render the correct number of clicks.',
actual: parseInt($('.clicks-count').html().trim(), 10),
expected: count
});
}
{
const count = 5;
const $ = createCounter(count);
assert({
given: 'a click count',
should: 'render the correct number of clicks.',
actual: parseInt($('.clicks-count').html().trim(), 10),
expected: count
});
}
});
我感到困惑的是回调函数的内容
assert
作为它的论据。
他把一个接一个的东西锁在里面。他基本上是这样做的:
const myFunc = () => {
{
// object that confuses me, with promise (`assert`) which resolves
}
{
// another object
}
}
以某种方式执行这些对象中的代码。在我看过的任何一门课程或在JavaScript上读过的书中,我从未见过这样的代码。我也从未在任何其他库或框架中使用过这种语法。但是,我测试了它,代码运行了,所有的测试都运行了。
注意他也从来没有归还过任何东西。即使他用了关键词
async
他没有
await
什么都行。
为什么这些分块对象是有效的JavaScript?它是如何工作的?这有一个明确的命名法吗?我看过MDN(和Google),但什么也没找到。