使用Jest验证是否使用适配器中的正确参数调用了导入的函数(适配器的依赖项)的测试

c2e8gylq  于 12个月前  发布在  Jest
关注(0)|答案(1)|浏览(145)

我的测试是这样的

import { SlugGeneratorAdapter } from './slug-generator-adapter'
import slugify from 'slugify'

describe('SlugGenerator Adapter', () => {
  test('Deve chamar slug generator com os parâmetros corretos. ', () => {
    const target = new SlugGeneratorAdapter()

    const slugifySpy = jest.fn(slugify)

    target.gerar('any text')
    expect(slugifySpy).toHaveBeenCalledWith('any text')
  }

  )
})

字符串
我的其他相关类是这样的

import slugify from 'slugify'
import { SlugGenerator } from '../../data/protocols/slug-generator'

export class SlugGeneratorAdapter implements SlugGenerator {
  gerar (param: string): string {
    slugify(param)
    return 'any_value'
  }
}


我只是没有足够的jest知识来实现这个测试。它失败了,因为slugify从来没有被调用(我相信)。对于那些不知道slugify是函数,添加斜杠字符串
你能做到的

import slugify from 'slugify'

 slugify('any text more text') it returns // any-text-more-text

chhkpiq4

chhkpiq41#

你需要使用jest.spyOn,它需要一个对象和一个方法名,所以如果你想监视default成员,你可以尝试

import * as slugify from 'slugify'
const slugifySpy = jest.spyOn(slugify, 'default')

// ... act ...
expect(slugyfySpy).toHaveBeenCalledWith('....')

字符串

相关问题