···3838In Jest, `TestFunction` can also be of type `(done: DoneCallback) => void`. If this form is used, the test will not be concluded until `done` is called. You can achieve the same using an `async` function, see the [Migration guide Done Callback section](/guide/migration#done-callback).
3939:::
40404141-Most options support both dot-syntax and object-syntax allowing you to use whatever style you prefer.
4141+You can define options by chaining properties on a function:
42424343-:::code-group
4444-```ts [dot-syntax]
4343+```ts
4544import { test } from 'vitest'
46454746test.skip('skipped test', () => {
4847 // some logic that fails right now
4948})
4949+5050+test.concurrent.skip('skipped concurrent test', () => {
5151+ // some logic that fails right now
5252+})
5053```
5151-```ts [object-syntax]
5454+5555+But you can also provide an object as a second argument instead:
5656+5757+```ts
5258import { test } from 'vitest'
53595460test('skipped test', { skip: true }, () => {
5561 // some logic that fails right now
5662})
6363+6464+test('skipped concurrent test', { skip: true, concurrent: true }, () => {
6565+ // some logic that fails right now
6666+})
5767```
5858-:::
6868+6969+They both work in exactly the same way. To use either one is purely a stylistic choice.
7070+7171+Note that if you are providing timeout as the last argument, you cannot use options anymore:
7272+7373+```ts
7474+import { test } from 'vitest'
7575+7676+// ✅ this works
7777+test.skip('heavy test', () => {
7878+ // ...
7979+}, 10_000)
8080+8181+// ❌ this doesn't work
8282+test('heavy test', { skip: true }, () => {
8383+ // ...
8484+}, 10_000)
8585+```
8686+8787+However, you can provide a timeout inside the object:
8888+8989+```ts
9090+import { test } from 'vitest'
9191+9292+// ✅ this works
9393+test('heavy test', { skip: true, timeout: 10_000 }, () => {
9494+ // ...
9595+})
9696+```
59976098## test
6199