我的测试组中有两个测试。一个使用它,另一个使用测试,它们似乎工作非常相似。他们之间有什么区别?
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);
})
});
});
更新
似乎test
位于the official API of Jest,但it
不是。
答案 0 :(得分:189)
答案 1 :(得分:6)
正如其他答案所阐明的,它们也做同样的事情。
我相信提供这两种选择是为了允许1)“ RSpec”样式测试,例如:
const myBeverage = {
delicious: true,
sour: false,
};
describe('my beverage', () => {
it('is delicious', () => {
expect(myBeverage.delicious).toBeTruthy();
});
it('is not sour', () => {
expect(myBeverage.sour).toBeFalsy();
});
});
或2)“ xUnit”样式测试,例如:
function sum(a, b) {
return a + b;
}
test('sum adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
文档:
答案 2 :(得分:4)
正如玩笑的文档所说,它们是相同的: 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();
});
});
这不是必需的-您可以直接在顶层编写测试块。但这很方便,如果您希望将测试组织成组。
答案 3 :(得分:0)
做同样的事情,但是它们的名称不同,并且它们与测试名称的相互作用。
测试
你写什么:
describe('yourModule', () => {
test('if it does this thing', () => {}
test('if it does the other thing', () => {}
})
如果失败,您会得到什么:
yourModule > if it does this thing
它
您写的是:
describe('yourModule', () => {
it('should do this thing', () => {}
it('should do the other thing', () => {}
})
如果失败,您会得到什么:
yourModule > should do this thing
因此,它与可读性有关,而与功能无关。在我看来,it
确实有一点意义,那就是要读取您尚未编写的失败测试结果。它有助于更快地了解测试的内容。
答案 4 :(得分:0)
您可以将 it() 替换为 xit() 以暂时排除正在执行的测试;使用 it() 和 xit() 比使用 test() 和 xit() 更有说服力。
答案 5 :(得分:-1)
到目前为止,我们还没有提到为什么它们有两个版本具有完全相同的功能。 我的猜测是,这仅是为了惯例。 测试单元测试 用于集成测试。
答案 6 :(得分:-16)
他们是一回事。我使用TypeScript作为编程语言,当我从/@types/jest/index.d.ts的jest包源代码查看定义文件时,我可以看到以下代码。显然,有很多不同的名称,测试'你可以使用它们中的任何一个。
declare var beforeAll: jest.Lifecycle;
declare var beforeEach: jest.Lifecycle;
declare var afterAll: jest.Lifecycle;
declare var afterEach: jest.Lifecycle;
declare var describe: jest.Describe;
declare var fdescribe: jest.Describe;
declare var xdescribe: jest.Describe;
declare var it: jest.It;
declare var fit: jest.It;
declare var xit: jest.It;
declare var test: jest.It;
declare var xtest: jest.It;