mirror of
https://github.com/vitest-dev/vitest.git
synced 2025-12-08 18:26:03 +00:00
81 lines
3.0 KiB
TypeScript
81 lines
3.0 KiB
TypeScript
import { expect, onTestFailed, onTestFinished, test } from 'vitest'
|
|
import { editFile, runVitest } from '../../test-utils'
|
|
import { instances } from '../settings'
|
|
|
|
// TODO: investigate `isolate: false` tests.
|
|
// Doesn't seem like we can run things in parallel if there are mocks
|
|
test.each([true/* , false */])('mocking works correctly - isolated %s', async (isolate) => {
|
|
const result = await runVitest({
|
|
root: 'fixtures/mocking',
|
|
isolate,
|
|
})
|
|
|
|
onTestFailed(() => {
|
|
console.error(result.stdout)
|
|
console.error(result.stderr)
|
|
})
|
|
|
|
expect(result.stderr).toReportNoErrors()
|
|
|
|
instances.forEach(({ browser }) => {
|
|
expect(result.stdout).toReportPassedTest('automocked.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('mocked-__mocks__.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('mocked-factory.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('mocked-factory-hoisted.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('not-mocked.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('mocked-nested.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('not-mocked-nested.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('import-actual-in-mock.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('import-actual-query.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('import-mock.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('mocked-do-mock-factory.test.ts', browser)
|
|
expect(result.stdout).toReportPassedTest('import-actual-dep.test.ts', browser)
|
|
})
|
|
|
|
expect(result.exitCode).toBe(0)
|
|
})
|
|
|
|
test('mocking dependency correctly invalidates it on rerun', async () => {
|
|
const { vitest, ctx } = await runVitest({
|
|
root: 'fixtures/mocking-watch',
|
|
watch: true,
|
|
})
|
|
onTestFinished(async () => {
|
|
await ctx.close()
|
|
})
|
|
|
|
await vitest.waitForStdout('Waiting for file changes...')
|
|
|
|
expect(vitest.stderr).toReportNoErrors()
|
|
|
|
instances.forEach(({ browser }) => {
|
|
expect(vitest.stdout).toReportPassedTest('1_mocked-on-watch-change.test.ts', browser)
|
|
expect(vitest.stdout).toReportPassedTest('2_not-mocked-import.test.ts', browser)
|
|
})
|
|
|
|
vitest.resetOutput()
|
|
editFile('./fixtures/mocking-watch/1_mocked-on-watch-change.test.ts', content => `${content}\n`)
|
|
|
|
await vitest.waitForStdout('Waiting for file changes...')
|
|
|
|
expect(vitest.stderr).toReportNoErrors()
|
|
|
|
instances.forEach(({ browser }) => {
|
|
expect(vitest.stdout).toReportPassedTest('1_mocked-on-watch-change.test.ts', browser)
|
|
expect(vitest.stdout).not.toReportPassedTest('2_not-mocked-import.test.ts', browser)
|
|
})
|
|
})
|
|
|
|
test('mocking out of root', async () => {
|
|
const { vitest, ctx } = await runVitest({
|
|
root: 'fixtures/mocking-out-of-root/project1',
|
|
})
|
|
onTestFinished(async () => {
|
|
await ctx.close()
|
|
})
|
|
expect(vitest.stderr).toReportNoErrors()
|
|
instances.forEach(({ browser }) => {
|
|
expect(vitest.stdout).toReportPassedTest('basic.test.js', browser)
|
|
})
|
|
})
|