【问题标题】:Jest and Typescript: Unable to check if object is instance of classJest 和 Typescript:无法检查对象是否是类的实例
【发布时间】:2021-02-15 22:25:23
【问题描述】:

我需要检查该方法是否返回了一个类的实例,但我有点迷路了。 当我运行测试时,我会收到 ReferenceError

Mapper.spec.js:

import { SetConfigurationRequestModel } from '../../usecases/Models/SetConfigurationRequestModel'
import { ISetConfigurationRequest } from '../requests/ISetConfigurationRequest'
import { Mapper } from './Mapper'

describe('Helpers/Mappers', () => {
  describe('cfgRequest2RequestModel', () => {
    test('should exist', () => {
      const sut = new Mapper()
      expect(sut.cfgRequest2RequestModel).toBeTruthy()
    })
    test('should be a method', () => {
      const sut = new Mapper()
      expect(typeof sut.cfgRequest2RequestModel).toBe('function')
    })
    test('should return a RequestModel', () => {
      const sut = new Mapper()
      const fakeRequest = makeFakeRequest()
      const requestModel = sut.cfgRequest2RequestModel(fakeRequest)
      expect(requestModel).toBeInstanceOf(SetConfigurationRequestModel)
    })
  })
})

Mapper.js:

import { SetConfigurationRequestModel } from '../../usecases/Models/SetConfigurationRequestModel'
import { ISetConfigurationRequest } from '../requests/ISetConfigurationRequest'

export class Mapper {
  cfgRequest2RequestModel (request: ISetConfigurationRequest): object {
    const request2 = new SetConfigurationRequestModel()
    return request2
  }
}


笑话输出:

FAIL  src/delivery/helpers/mappers.spec.ts
  ● Helpers/Mappers › cfgRequest2RequestModel › should return a RequestModel

    ReferenceError: SetConfigurationRequestModel is not defined

      4 | export class Mapper {
      5 |   cfgRequest2RequestModel (request: ISetConfigurationRequest): object {
    > 6 |     const request2 = new SetConfigurationRequestModel()
        |                      ^
      7 |     return request2
      8 |   }
      9 | }

      at Mapper.cfgRequest2RequestModel (src/delivery/helpers/Mapper.ts:6:22)
      at Object.<anonymous> (src/delivery/helpers/mappers.spec.ts:42:32)```

【问题讨论】:

  • 如果 import 语句丢失或SetConfigurationRequestModel 中存在拼写错误,即模块范围内没有具有此名称的变量,这是可能的。我不知道您发布的确切代码在何种情况下会出现此错误;
  • @EstusFlask 非常感谢,我才意识到这是一个开玩笑的缓存问题。

标签: typescript jestjs instanceof ts-jest


【解决方案1】:

问题与代码无关。

以防万一有人遇到同样的情况,请在 jest 命令中添加 --no-cache 选项。

【讨论】:

    猜你喜欢
    • 2021-11-20
    • 2013-05-17
    • 2016-07-07
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多