ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 단위 테스트 - Search 컴포넌트
    테스트/단위 테스트 (Vue) 2021. 9. 8. 01:10

     

    단위 테스트 - Search 컴포넌트

     

    Search.vue

    <template>
      <div class="container">
        <input
          v-model="title"
          class="form-control"
          type="text" 
          placeholder="Search for Movies, Series & more" 
          @keyup.enter="apply" />
        <div class="selects">
          <select
            v-for="filter in filters"
            v-model="$data[filter.name]"
            :key="filter.name"
            class="form-select">
            <option 
              v-if="filter.name === 'year'"
              value="">
              All Years
            </option>
            <option
              v-for="item in filter.items"
              :key="item">
              {{ item }}
            </option>
          </select>
        </div>
        <button
          class="btn btn-primary"
          @click="apply">
          Apply
        </button>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          title: '',
          type: 'movie',
          number: 10,
          year: '',
          filters: [
            {
              name: 'type',
              items: ['movie', 'series', 'episode']
            },
            {
              name: 'number',
              items: [10, 20, 30]
            },
            {
              name: 'year',
              items: (() => {
                const years = []
                const thisYear = new Date().getFullYear() // 올해의 년도 반환
                for (let i = thisYear; i >= 1985; i -= 1) {
                  years.push(i)
                }
                return years
              })()
            }
          ]
        }
      },
      methods: {
        async apply() {
          this.$store.dispatch('movie/searchMovies', {
            title: this.title,
            type: this.type,
            number: this.number,
            year: this.year
          })
        }
      }
    }
    </script>
    ...

     

    Search.test.js

    import { shallowMount } from '@vue/test-utils'
    import Search from '~/components/Search'
    
    describe('components/Sarch.vue', () => {
      let wrapper
    
      beforeEach(() => {
        wrapper = shallowMount(Search)
      })
    
      test('선택 가능한 연도의 개수가 일치합니다', () => {
        const year = wrapper.vm.filters.find(f => f.name === 'year')
        // 2021 - 1985 + 1 = 37
        const yearLenth = new Date().getFullYear() - 1985 + 1
        expect(year.items.length).toBe(yearLenth)
      })
    })

    댓글

Designed by Tistory.