Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기
10091 단어 nuxtvue-test-utilsVue.jsJest
개요
Nuxt.js 프로젝트에 나중에 Jest와 vue-test-utils를 넣을 기회가 있었으므로 메모 해 둡니다.
필요한 라이브러리 설치
yarn add -D @babel/plugin-transform-runtime @babel/preset-env @vue/test-utils jest vue-jest babel-core vue-jest
.babelrc 추가
프로젝트의 루트 바로 아래에 .babelrc
를 추가합니다.
// .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": false,
"targets": {
"node": "current"
}
}
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
jest.config.js 추가
그런 다음 jest.config.js
를 추가합니다.
module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1'
},
moduleFileExtensions: ['js', 'json', 'vue']
}
package.json에 test script 추가
추가합니다.
"scripts": {
..
"test": "jest --config jest.config.js"
},
이제 yarn run test
에서 테스트를 실행할 수 있습니다.
테스트 추가
이 섹션에서는 userInfo
만 props
에있는 UserInfoCard
라는 구성 요소를 테스트합니다. 테스트는 .user-name
라는 CSS 클래스에 사용자 이름이 표시되는지 테스트합니다.
// test/components/userInfoCard.spec.js
import { mount } from '@vue/test-utils'
import UserInfoCard from '~/app/components/UserInfoCard.vue'
import UserFixture from '@fixture/user'
describe('UserInfoCard', () => {
test('Display text', () => {
const wrapper = mount(UserInfoCard, { propsData: { userInfo: UserFixture } })
expect(wrapper.find('.user-name').text()).toEqual('Test Name')
})
})
테스트에서 propsData
를 전달할 때의 hash key 이름은 구성요소가 수신하는 props
이름과 일치해야 합니다. 테스트 데이터는 fixture
로서 다른 파일로 정의해 주면 사용되게 편리합니다.
// test/fixtures/user.js
export default {
id: 1,
name: 'Test Name',
..
}
fixture
용 name mapper
도 jest.config.js
에 추가하는 것이 좋습니다.
module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
"^@fixture/(.*)$": "<rootDir>/test/fixtures/$1" // 追加
},
moduleFileExtensions: ['js', 'json', 'vue']
}
테스트 실행
yarn run test
에서 테스트를 실행해 봅시다!
시험은 통과했는가?
끝에
테스트를 꼼꼼히 쓰는 컴포넌트와 그렇지 않은 컴포넌트를 파악한 다음 테스트를 작성해 봅시다. 그럼 좋은 테스트 생활을!
Reference
이 문제에 관하여(Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hassan/items/f90ee81f9cb57ed21887
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
yarn add -D @babel/plugin-transform-runtime @babel/preset-env @vue/test-utils jest vue-jest babel-core vue-jest
.babelrc 추가
프로젝트의 루트 바로 아래에 .babelrc
를 추가합니다.
// .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": false,
"targets": {
"node": "current"
}
}
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
jest.config.js 추가
그런 다음 jest.config.js
를 추가합니다.
module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1'
},
moduleFileExtensions: ['js', 'json', 'vue']
}
package.json에 test script 추가
추가합니다.
"scripts": {
..
"test": "jest --config jest.config.js"
},
이제 yarn run test
에서 테스트를 실행할 수 있습니다.
테스트 추가
이 섹션에서는 userInfo
만 props
에있는 UserInfoCard
라는 구성 요소를 테스트합니다. 테스트는 .user-name
라는 CSS 클래스에 사용자 이름이 표시되는지 테스트합니다.
// test/components/userInfoCard.spec.js
import { mount } from '@vue/test-utils'
import UserInfoCard from '~/app/components/UserInfoCard.vue'
import UserFixture from '@fixture/user'
describe('UserInfoCard', () => {
test('Display text', () => {
const wrapper = mount(UserInfoCard, { propsData: { userInfo: UserFixture } })
expect(wrapper.find('.user-name').text()).toEqual('Test Name')
})
})
테스트에서 propsData
를 전달할 때의 hash key 이름은 구성요소가 수신하는 props
이름과 일치해야 합니다. 테스트 데이터는 fixture
로서 다른 파일로 정의해 주면 사용되게 편리합니다.
// test/fixtures/user.js
export default {
id: 1,
name: 'Test Name',
..
}
fixture
용 name mapper
도 jest.config.js
에 추가하는 것이 좋습니다.
module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
"^@fixture/(.*)$": "<rootDir>/test/fixtures/$1" // 追加
},
moduleFileExtensions: ['js', 'json', 'vue']
}
테스트 실행
yarn run test
에서 테스트를 실행해 봅시다!
시험은 통과했는가?
끝에
테스트를 꼼꼼히 쓰는 컴포넌트와 그렇지 않은 컴포넌트를 파악한 다음 테스트를 작성해 봅시다. 그럼 좋은 테스트 생활을!
Reference
이 문제에 관하여(Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hassan/items/f90ee81f9cb57ed21887
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
// .babelrc
{
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": false,
"targets": {
"node": "current"
}
}
]
],
"plugins": [
"@babel/plugin-transform-runtime"
]
}
그런 다음
jest.config.js
를 추가합니다.module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1'
},
moduleFileExtensions: ['js', 'json', 'vue']
}
package.json에 test script 추가
추가합니다.
"scripts": {
..
"test": "jest --config jest.config.js"
},
이제 yarn run test
에서 테스트를 실행할 수 있습니다.
테스트 추가
이 섹션에서는 userInfo
만 props
에있는 UserInfoCard
라는 구성 요소를 테스트합니다. 테스트는 .user-name
라는 CSS 클래스에 사용자 이름이 표시되는지 테스트합니다.
// test/components/userInfoCard.spec.js
import { mount } from '@vue/test-utils'
import UserInfoCard from '~/app/components/UserInfoCard.vue'
import UserFixture from '@fixture/user'
describe('UserInfoCard', () => {
test('Display text', () => {
const wrapper = mount(UserInfoCard, { propsData: { userInfo: UserFixture } })
expect(wrapper.find('.user-name').text()).toEqual('Test Name')
})
})
테스트에서 propsData
를 전달할 때의 hash key 이름은 구성요소가 수신하는 props
이름과 일치해야 합니다. 테스트 데이터는 fixture
로서 다른 파일로 정의해 주면 사용되게 편리합니다.
// test/fixtures/user.js
export default {
id: 1,
name: 'Test Name',
..
}
fixture
용 name mapper
도 jest.config.js
에 추가하는 것이 좋습니다.
module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
"^@fixture/(.*)$": "<rootDir>/test/fixtures/$1" // 追加
},
moduleFileExtensions: ['js', 'json', 'vue']
}
테스트 실행
yarn run test
에서 테스트를 실행해 봅시다!
시험은 통과했는가?
끝에
테스트를 꼼꼼히 쓰는 컴포넌트와 그렇지 않은 컴포넌트를 파악한 다음 테스트를 작성해 봅시다. 그럼 좋은 테스트 생활을!
Reference
이 문제에 관하여(Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hassan/items/f90ee81f9cb57ed21887
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"scripts": {
..
"test": "jest --config jest.config.js"
},
이 섹션에서는
userInfo
만 props
에있는 UserInfoCard
라는 구성 요소를 테스트합니다. 테스트는 .user-name
라는 CSS 클래스에 사용자 이름이 표시되는지 테스트합니다.// test/components/userInfoCard.spec.js
import { mount } from '@vue/test-utils'
import UserInfoCard from '~/app/components/UserInfoCard.vue'
import UserFixture from '@fixture/user'
describe('UserInfoCard', () => {
test('Display text', () => {
const wrapper = mount(UserInfoCard, { propsData: { userInfo: UserFixture } })
expect(wrapper.find('.user-name').text()).toEqual('Test Name')
})
})
테스트에서
propsData
를 전달할 때의 hash key 이름은 구성요소가 수신하는 props
이름과 일치해야 합니다. 테스트 데이터는 fixture
로서 다른 파일로 정의해 주면 사용되게 편리합니다.// test/fixtures/user.js
export default {
id: 1,
name: 'Test Name',
..
}
fixture
용 name mapper
도 jest.config.js
에 추가하는 것이 좋습니다.module.exports = {
transform: {
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
"^@fixture/(.*)$": "<rootDir>/test/fixtures/$1" // 追加
},
moduleFileExtensions: ['js', 'json', 'vue']
}
테스트 실행
yarn run test
에서 테스트를 실행해 봅시다!
시험은 통과했는가?
끝에
테스트를 꼼꼼히 쓰는 컴포넌트와 그렇지 않은 컴포넌트를 파악한 다음 테스트를 작성해 봅시다. 그럼 좋은 테스트 생활을!
Reference
이 문제에 관하여(Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Hassan/items/f90ee81f9cb57ed21887
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
테스트를 꼼꼼히 쓰는 컴포넌트와 그렇지 않은 컴포넌트를 파악한 다음 테스트를 작성해 봅시다. 그럼 좋은 테스트 생활을!
Reference
이 문제에 관하여(Nuxt.js에 나중에 테스트 (Jest/vue-test-utils) 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Hassan/items/f90ee81f9cb57ed21887텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)