用
Jest
或 Jasmine
编写单元测试时,什么时候使用 describe
?
什么时候使用
it
?
我经常这样做
describe('my beverage', () => {
test('is delicious', () => {
});
});
什么时候需要新的
describe
或新的it
?
describe
将您的测试套件分解为组件。根据您的测试策略,您可能会对类中的每个函数、插件的每个模块或每个面向用户的功能进行描述。
您还可以嵌套描述以进一步细分套件。
it
是您执行单独测试的地方。您应该能够像一个小句子一样描述每个测试,例如“它在设置半径时计算面积”。您不应该能够进一步细分测试 - 如果您觉得需要,请使用 describe
代替。
describe('Circle class', function() {
describe('area is calculated when', function() {
it('sets the radius', function() { ... });
it('sets the diameter', function() { ... });
it('sets the circumference', function() { ... });
});
});
正如我在这个问题中提到的,
describe
用于分组,it
用于测试。
正如笑话文档所说,
test
和it
是相同的:
https://jestjs.io/docs/en/api#testname-fn-timeout
测试(名称,fn,超时)
也在别名下:it(name, fn, timeout)
和
describe
仅适用于当您希望将测试组织成组时:
https://jestjs.io/docs/en/api#describename-fn
描述(名称,fn)
describe(name, fn)
创建一个将多个相关测试组合在一起的块。例如,如果您有一个 myBeverage
物体,应该很美味但不酸,您可以使用以下命令来测试它:
const myBeverage = {
delicious: true,
sour: false,
};
describe('my beverage', () => {
test('is delicious', () => {
expect(myBeverage.delicious).toBeTruthy();
});
test('is not sour', () => {
expect(myBeverage.sour).toBeFalsy();
});
});
这不是必需的 - 您可以直接在顶层编写测试块。但如果您希望将测试组织成组,这会很方便。
我更多地是从对测试输出的影响来考虑这一点。通过使用描述或多个级别的描述,您可以对输出进行分组以提高可读性。
简单地认为
describe
是组,it
或 test
是真正的单元测试。
因此,
describe
可以嵌套在describe
中,但it
则不能。
根据我的记忆,test 和 in 关键字是可以互换的。下面两个是相等的。
示例01:
describe('my beverage', () => {
test('is delicious', () => {
});
});
示例02:
describe('my beverage', () => {
test('is delicious', () => {
});
});
并使用描述对所有测试用例和可读性进行分组。例如,
describe('my beverage', () => {
describe('delicious', () => {
test('when cold', () => {
});
test('when hot', () => {
});
});
});