๐ ๋ชฉ์ฐจ
- 00.Introduction
- 01.Mixin Testํ๊ธฐ
- 02.Conclusion
๐ 00.Introduction
์ด๋ฒ ํฌ์คํ ์ mixins์ ํ ์คํธ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃน๋๋น. ๐ mixins๋ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์์.(์ปดํฌ๋ํธ ํ ์คํธ์ ๋น์ทํ๊ฒ ํฉ๋๋ค.) ์ด๋ฒ ํฌ์คํ ์์๋ ์ด๋ป๊ฒ mixins๋ฅผ ํ ์คํ ํ๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. mixins๋ counter example๋ก ์งํํฉ๋๋ค. ํด๋น ์ฝ๋๋ ์ฌ๊ธฐ์์ ๋ณด์ค์ ์์ต๋๋ค.
๐ 01.Mixin Testํ๊ธฐ
์ด๋ฒ ํฌ์คํ ์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ๋จผ์ counter mixins ์ฝ๋๋ฅผ ์ง๋ณด๊ณ ๊ทธ๋ค์ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. ํด๋น ์ฝ๋๋ ์ด๋ ๊ฒ ๋ฉ๋๋ค.
// CounterMixins.js
export default {
data: () => ({
count: 0
}),
methods: {
increment() {
this.count++;
},
decrement() {
this.count--;
}
},
}
์ด๋ฒ์๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
import { shallowMount } from '@vue/test-utils';
import CounterMixins from '../../src/mixins/CounterMixins';
describe('CounterMixins test', () => {
// Initialize - ์๋ก์ด ์ปดํฌ๋ํธ ๋ง๋ค๊ธฐ(mixins๋ฅผ ์ถ๊ฐํ์ฌ)
const Component = {
render() {},
mixins: [CounterMixins],
};
const wrapper = shallowMount(Component);
const { vm } = wrapper;
describe('data test', () => {
it('data.count should be 0', () => {
expect(vm.count).toBe(0);
});
});
describe('method test', () => {
beforeEach(() => {
vm.count = 0;
});
describe('increment test', () => {
it('increment once', () => {
vm.increment();
expect(vm.count).toBe(1);
});
});
describe('decrement test', () => {
it('decrement once', () => {
vm.decrement();
expect(vm.count).toBe(-1);
});
});
});
});
์ปดํฌ๋ํธ ํ
์คํ
์ ํ ๋ ์ฒ๋ผ shallowMount
๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ค๋ฅธ ์ ์ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด์ mixins๋ฅผ ๋ฃ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ค์๋ ์ปดํฌ๋ํธ ํ
์คํ
๊ณผ ๋์ผํฉ๋๋ค.
๐ 02.Conclusion
Mixinsํ ์คํ ์ ๊ทธ๋ ๊ฒ ๋ณต์กํ์ง ์์ต๋๋ค. ๋ค๋ง ์ผ๋ฐ์ ์ธ ์ปดํฌ๋ํธ ํ ์คํ ๊ณผ ๋ค๋ฅธ์ ์ ์ปดํฌ๋ํธ์ ๋ผ์์ง๋ mixins์ฒ๋ผ ์๋ก์ด ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ์ฌ ๋ง๋ค์ด ์ฃผ๋ ์ ์ด ๋ค๋ฆ ๋๋ค. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์ ๊ธฐ๋ํด์ฃผ์ธ์~~!๐
'Vue TDD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ์ฌ ํ๋ก์ ํธ Hydration ์คํจ Github Action์ผ๋ก ํ ์คํ ํ๊ธฐ (feat. cypress) (5) | 2022.01.19 |
---|---|
Vue TDD - ๋ฒ์ธ1 (Test Double) (0) | 2020.08.22 |
Vue TDD - ํ๊ณ ํธ (0) | 2020.08.10 |
Test code ์ฝ๊ฒ ์ฐ๊ธฐ - 1 (0) | 2020.08.06 |
Vue TDD - E2E ํธ (0) | 2020.08.02 |