ABOUT ME

-

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

     

    단위 테스트 - Movie 컴포넌트

     

    Movie.vue

    ...
    <script>
    import { mapState } from 'vuex'
    import Loader from '~/components/Loader'
    
    export default {
      components: {
        Loader
      },
      data() {
        return {
          imageLoading: true
        }
      },
      computed: {
        ...mapState('movie', [
          'theMovie',
          'loading'
        ])
      },
      created() {
        console.log(this.$route)
        this.$store.dispatch('movie/searchMovieWithId', {
          // movie/tt123456
          id: this.$route.params.id
        })
      },
      methods: {
        requestDiffSizeImage(url, size = 700) {
          if (!url || url === 'N/A') {
            this.imageLoading = false
            return ''
          }      
          const src = url.replace('SX300', `SX${size}`)
          this.$loadImage(src)
            .then(() => {
              this.imageLoading = false
            })
          return src
        }
      }
    }
    </script>
    ...

     

    Movie.test.js

    import { shallowMount } from '@vue/test-utils'
    import store from '~/store'
    import router from '~/routes'
    import loadImage from '~/plugins/loadImage'
    import Movie from '~/routes/Movie'
    
    describe('routes/Movie.vue', () => {
      let wrapper
    
      beforeEach(async () => {
        window.scrollTo = jest.fn()
    
        // 영화 상세 페이지 이동
        router.push('/movie/tt1234567')
        // 페이지 완료까지 기다림
        await router.isReady()
    
        wrapper = shallowMount(Movie, {
          global: {
            plugins: [
              store,
              router,
              loadImage
            ]
          }
        })
      })
    
      test('최초 접속한 URL의 파라미터를 확인', () => {
        expect(wrapper.vm.$route.params.id).toBe('tt1234567')
      })
    
      test('지정한 이미지 크기로 URL을 변경', () => {
        const url = 'https://google.com/sample_image_SX300.jpg'
        expect(wrapper.vm.requestDiffSizeImage(url)).toContain('SX700')
        expect(wrapper.vm.requestDiffSizeImage(url, 900)).toContain('SX900')
      })
    
      test('정상적인 이미지 주소가 아닌 경우 빈 문자를 반환', () => {
        expect(wrapper.vm.requestDiffSizeImage()).toBe('')
        expect(wrapper.vm.requestDiffSizeImage('N/A')).toBe('')
      })
    })

    댓글

Designed by Tistory.