2

Tape を使用して API を呼び出す非同期関数をテストしようとしていますが、うまくいきません。以前にモカ/チャイとジャスミンを使用したことがありますが、ここでやりたいことを行う方法がわかりません。

これは私がテストしたい機能です

const logicGetMovies = async (genre, page) => {

  numCheck(genre, 'genre')
  numCheck(page, 'page')
  stringCheck(process.env.API_KEY,'process.env.API_KEY')

  const url = `https://api.themoviedb.org/3/discover/movie?with_genres=${genre}&api_key=${process.env.API_KEY}&page=${page}&sort_by=vote_average.desc`

  try {
    return await axios.get(url)
  } catch (e) {
    throw new APIError(e.message)
  }
}

APIErrors (私自身のエラータイプ) をスローする 2 つのヘルパー関数に依存しています

const numCheck = (num, name) => {
  if (!num) throw new APIError(`${name} is missing`)
  if (typeof num !== 'number' || num <= 0) throw new APIError(`${name} must be a number greater than 0`)
}

const stringCheck = (string, name) => {
  if (!string) throw new APIError(`${name} is missing`)
  if (typeof string !== 'string') throw new APIError(`${name} must be of type string`)
}

このテープ テストを試しましたが、両方とも失敗し、エラーが検出されませんでした

const test = require('tape')
const logic = require('../../logic')
const APIError = require('../../logic/APIError')

test('getMovies should throw error with missing genre',(t) =>{
  t.throws(logic.logicGetMovies(null,1),APIError,'genre is missing')

})

に変更しようとしましたasyncが、それは役に立ちませんでした。

const test = require('tape')
const logic = require('../../logic')
const APIError = require('../../logic/APIError')

test('getMovies should throw error with missing genre', async (t) => {
  t.throws(logic.logicGetMovies(null, 1), APIError, 'genre is missing')
  t.end()
})

明らかに私はここで迷っています。手がかりや答えは大歓迎です!

4

2 に答える 2