mirror of
https://github.com/vuejs/vue-cli.git
synced 2026-04-21 11:58:36 -05:00
114 lines
2.9 KiB
JavaScript
114 lines
2.9 KiB
JavaScript
jest.setTimeout(20000)
|
|
|
|
const create = require('@vue/cli-test-utils/createTestProject')
|
|
|
|
test('should work', async () => {
|
|
const project = await create('unit-jest', {
|
|
plugins: {
|
|
'@vue/cli-plugin-babel': {},
|
|
'@vue/cli-plugin-unit-jest': {}
|
|
}
|
|
})
|
|
await project.run(`vue-cli-service test:unit`)
|
|
})
|
|
|
|
test('should respect jest testMatch config', async () => {
|
|
const project = await create('unit-jest-package.json', {
|
|
plugins: {
|
|
'@vue/cli-plugin-babel': {},
|
|
'@vue/cli-plugin-unit-jest': {}
|
|
}
|
|
})
|
|
const config = JSON.parse(await project.read('package.json'))
|
|
config.jest.testMatch = ['custom-test-directory/my.spec.js']
|
|
|
|
await project.write('package.json', JSON.stringify(config))
|
|
|
|
let result
|
|
try {
|
|
await project.run(`vue-cli-service test:unit`)
|
|
} catch (e) {
|
|
result = e
|
|
}
|
|
expect(result.stdout).toMatch('testMatch: custom-test-directory/my.spec.js')
|
|
expect(result.stdout).toMatch('No tests found')
|
|
})
|
|
|
|
test('should respect jest.config.js testMatch config', async () => {
|
|
const project = await create('unit-jest-jest.config.js', {
|
|
plugins: {
|
|
'@vue/cli-plugin-babel': {},
|
|
'@vue/cli-plugin-unit-jest': {}
|
|
},
|
|
useConfigFiles: true
|
|
})
|
|
await project.write('jest.config.js', `
|
|
module.exports = ${JSON.stringify({
|
|
testMatch: ['custom-test-directory/my.spec.js']
|
|
})}
|
|
`)
|
|
|
|
let result
|
|
try {
|
|
await project.run(`vue-cli-service test:unit`)
|
|
} catch (e) {
|
|
result = e
|
|
}
|
|
expect(result.stdout).toMatch('testMatch: custom-test-directory/my.spec.js')
|
|
expect(result.stdout).toMatch('No tests found')
|
|
})
|
|
|
|
test('should work without Babel', async () => {
|
|
const project = await create('jest-without-babel', {
|
|
plugins: {
|
|
'@vue/cli-plugin-unit-jest': {}
|
|
},
|
|
useConfigFiles: true
|
|
})
|
|
await project.run(`vue-cli-service test:unit`)
|
|
})
|
|
|
|
test('should work with tsx', async () => {
|
|
const { write, run } = await create('jest-with-tsx', {
|
|
plugins: {
|
|
'@vue/cli-plugin-babel': {},
|
|
'@vue/cli-plugin-typescript': {
|
|
useTsWithBabel: true,
|
|
classComponent: true
|
|
},
|
|
'@vue/cli-plugin-unit-jest': {}
|
|
},
|
|
useConfigFiles: true
|
|
})
|
|
|
|
await write('src/components/HelloWorld.tsx', `
|
|
import { Component, Prop, Vue } from 'vue-property-decorator';
|
|
|
|
@Component
|
|
export default class HelloWorld extends Vue {
|
|
@Prop() private msg!: string;
|
|
|
|
render () {
|
|
return <div>{this.msg}</div>
|
|
}
|
|
}
|
|
`)
|
|
|
|
await write('tests/unit/example.spec.ts', `
|
|
import { shallowMount } from '@vue/test-utils'
|
|
import MyComponent from '@/components/HelloWorld.tsx'
|
|
|
|
describe('HelloWorld.tsx', () => {
|
|
it('renders props.msg when passed', () => {
|
|
const msg = 'new message'
|
|
const wrapper = shallowMount(MyComponent, {
|
|
propsData: { msg }
|
|
})
|
|
expect(wrapper.text()).toMatch(msg)
|
|
})
|
|
})
|
|
`)
|
|
|
|
await run(`vue-cli-service test:unit`)
|
|
})
|