Vue TDD

Vue TDD - ๋ฒˆ์™ธ2 (mixins tesing)

eddie0329 2020. 9. 23. 17:42
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ ๋ชฉ์ฐจ

  • 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์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ ์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ๋‹ค์Œ ํฌ์ŠคํŒ…์„ ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š”~~!๐Ÿ™‡

๋ฐ˜์‘ํ˜•