I have two tests in my test group. One of the tests use it
and the other one uses test
. Both of them seem to be working very similarly. What is the difference between them?
describe('updateAll', () => {
it('no force', () => {
return updateAll(TableName, ["fileName"], {compandId: "test"})
.then(updatedItems => {
let undefinedCount = 0;
for (let item of updatedItems) {
undefinedCount += item === undefined ? 1 : 0;
}
// console.log("result", result);
expect(undefinedCount).toBe(updatedItems.length);
})
});
test('force update', () => {
return updateAll(TableName, ["fileName"], {compandId: "test"}, true)
.then(updatedItems => {
let undefinedCount = 0;
for (let item of updatedItems) {
undefinedCount += item === undefined ? 1 : 0;
}
// console.log("result", result);
expect(undefinedCount).toBe(0);
})
});
});
Update - Nov 2022:
It seems that test
and it
is interchangeable according to the official API of Jest . As @gwildu described here , you should choose one over the other for the sake of readability.
8条答案
按热度按时间mbyulnm01#
Jest docs状态
it
是test
的别名。所以从功能的Angular 来看,它们是完全相同的。它们的存在都是为了使你的测试能够产生一个可读的英语句子。56lgkhnf2#
他们做同样的事情,但他们的名字不同,他们的互动与测试的名字不同。
第一个月第一个月
你写的东西:
如果出现故障,您会得到什么:
一月一日
你写的东西:
如果出现故障,您会得到什么:
所以它是关于可读性而不是功能性的。
在我看来,
it
在阅读一个你没有自己编写的失败测试的结果时确实有其意义,它有助于更快地理解测试的内容。一些开发人员还将
Should do this thing
缩短为Does this thing
,Does this thing
稍短,并且在语义上也适合it
表示法。c0vxltue3#
正如其他答案所阐明的那样,它们做的是同样的事情。
我相信这两个选项是为了允许1)“RSpec“类型的测试,例如:
或2)“xUnit“类型的测试,如:
文件:
qvtsj1bj4#
正如笑话文档所说,它们是相同的:它别名
测试(名称,fn,超时)
别名:it(名称,fn,超时)
而
describe
只适用于您希望将测试组织成组的情况:描述了描述(名称,fn)
describe(name, fn)
会建立一个区块,将数个相关的测试组合在一起。例如,如果您有一个myBeverage对象,它应该是美味但不酸的,您可以使用下列指令来测试它:这并不是必须的--你可以直接在顶层编写测试块,但是如果你更喜欢把你的测试组织成组,这会很方便。
xoefb8l85#
您可以将
it()
替换为xit()
,以暂时排除正在执行的测试;使用it()
和xit()
比使用test()
和xit()
更有说服力。参见聚焦和排除测试
w8f9ii696#
以下是该文档的摘录:链接
test(name, fn, timeout)
别名:
it(name, fn, timeout)
在测试文件中,你只需要运行测试的测试方法。例如,假设有一个函数
inchesOfRain()
应该为零。你的整个测试可以是:......bn31dyow7#
Jest haven't mentioned why they have two versions for the exact same functionality.
My guess is, it's only for convention.
test
is for unit tests, andit
is for integration tests.3phpmpom8#
我使用TypeScript作为编程语言,当我从/@types/jest/index.d.ts的Jest包源代码中查看定义文件时,我可以看到下面的代码。
显然,“test”有很多不同的名称,你可以使用其中的任何一个。