在使用describe()时,在jest或jasmine中编写单元测试时?你何时使用它()?
我经常做
describe('App Name', function () {
it('test ....', function () {
})'
})
什么时候进行新的describe()?还是一个新的()?
答案 0 :(得分:63)
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() { ... });
});
});
答案 1 :(得分:21)
正如我在本question中所提到的,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();
});
});
这不是必需的-您可以直接在顶层编写测试块。但这很方便,如果您希望将测试组织成组。
答案 2 :(得分:0)
我更多地考虑这对测试输出的影响。通过使用describe或多级别的describe,您可以将输出分组以提高可读性。