admin管理员组文章数量:1127027
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.
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 Answers
Reset to default 951The Jest docs state it
is an alias of test
. So they are exactly the same from a functional point of view. They exist both to enable to make a readable English sentence from your test.
They do the same thing, but their names are different and with that their interaction with the name of the test.
test
What you write:
describe('yourModule', () => {
test('if it does this thing', () => {});
test('if it does the other thing', () => {});
});
What you get if something fails:
yourModule > if it does this thing
it
What you write:
describe('yourModule', () => {
it('should do this thing', () => {});
it('should do the other thing', () => {});
});
What you get if something fails:
yourModule > should do this thing
So it's about readability not about functionality.
In my opinion, it
really has a point when it comes to read the result of a failing test that you haven't written yourself. It helps to faster understand what the test is about.
Some developer also shorten the Should do this thing
to Does this thing
which is a bit shorter and also fits semantically to the it
notation.
As the other answers have clarified, they do the same thing.
I believe the two are offered to allow for either 1) "RSpec" style tests like:
const myBeverage = {
delicious: true,
sour: false,
};
describe('my beverage', () => {
it('is delicious', () => {
expect(myBeverage.delicious).toBeTruthy();
});
it('is not sour', () => {
expect(myBeverage.sour).toBeFalsy();
});
});
or 2) "xUnit" style tests like:
function sum(a, b) {
return a + b;
}
test('sum adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
Documentation:
- https://jestjs.io/docs/en/api.html#describename-fn
- https://jestjs.io/docs/en/api.html#testname-fn-timeout
As the jest documentation says, they are the same: it alias
test(name, fn, timeout)
Also under the alias: it(name, fn, timeout)
And describe
is just for when you prefer your tests to be organized into groups:
describe
describe(name, fn)
describe(name, fn)
creates a block that groups together several related tests. For example, if you have a myBeverage object that is supposed to be delicious but not sour, you could test it with:
const myBeverage = {
delicious: true,
sour: false,
};
describe('my beverage', () => {
test('is delicious', () => {
expect(myBeverage.delicious).toBeTruthy();
});
test('is not sour', () => {
expect(myBeverage.sour).toBeFalsy();
});
});
This isn't required - you can write the test blocks directly at the top level. But this can be handy if you prefer your tests to be organized into groups.
You could replace it()
with xit()
to temporarily exclude a test from being executed; using it()
and xit()
is more eloquent than using test()
and xit()
.
see Focusing and Excluding Tests
The following is an excerpt from the document:link
test(name, fn, timeout)
Also under the alias:
it(name, fn, timeout)
All you need in a test file is the test method which runs a test. For example, let's say there's a function
inchesOfRain()
that should be zero. Your whole test could be: ......
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, and it
is for integration tests.
They are the same thing. I am using TypeScript as the programming language, and when I look into the definition file from the Jest package source code from /@types/jest/index.d.ts, I can see the following code.
Obviously, there are lots of different names of 'test', and you can use any of them.
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;
本文标签: javascriptWhat is the difference between 39it39 and 39test39 in JestStack Overflow
版权声明:本文标题:javascript - What is the difference between 'it' and 'test' in Jest? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736687746a1947756.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
it
might just be there for familiarity and migration from other frameworks. – Andrew Li Commented Aug 20, 2017 at 3:38test
is under the aliasit
. – Claies Commented Aug 20, 2017 at 4:00