最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

玩笑:传递给构造函数的模拟依赖项

IT培训 admin 4浏览 0评论

玩笑:传递给构造函数的模拟依赖项

我一直在尝试模拟通过构造函数传入的类,到目前为止,我所遇到的所有示例都已经初始化了构造函数内部的依赖关系。据我了解,玩笑用其重写的构造函数替换了此类依赖关系,但由于我自己传递了依赖关系,因此在初始化UnderTest时需要一个可传递的实例。

为了理想的价格,我理想地寻找类似于Mockito的行为,类似的东西。

const mockedDependency = ???
const underTest = new UnderTest(mockedDependency)

...
Proceed to write tests for underTest

这是我要测试的代码。请假设MockedDependency有其自己的依赖项,也将其传递给构造函数。

export default class UnderTest {

  private mockedDependency : MockedDependency

  constructor(mockedDependency: MockedDependency) {
    this.mockedDependency = mockedDependency
  }

  public methodUnderTest(parameter: string) {
    const mockedResult = this.mockedDependency.returnSomething(parameter)
    return this.doSomethingElse(mockedResult)
  }

  public methodUnderTest2(parameter1: string, parameter2: string) {
    const mockedResult = this.mockedDependency.returnSomething2(parameter1, parameter2)
    return this.doSomethingElse(mockedResult)
  }

  private doSomethingElse(mockedResult: string) {
    return mockedResult
  }
}

您将如何进行单元测试UnderTest类?奖励点是一种可以在每次测试中或通过输入设置mockedDependency方法结果的方法。

编辑:

对于那些偶然发现相同问题的人,可能的解决方案:

可以将变量强制转换为所需对象,并像这样重写方法:

const mockedDependency = {
  returnSomething(parameter: string) {
    return parameter    
  }
} as MockedDependency

const underTest = new UnderTest(mockedDependency)

它远非完美,但适用于更简单的情况。

提前感谢!

我一直在尝试模拟通过构造函数传入的类,到目前为止,我所遇到的所有示例都已经初始化了构造函数内部的依赖关系。以我的理解开玩笑...

回答如下:

这里是解决方法:

玩笑:传递给构造函数的模拟依赖项

我一直在尝试模拟通过构造函数传入的类,到目前为止,我所遇到的所有示例都已经初始化了构造函数内部的依赖关系。据我了解,玩笑用其重写的构造函数替换了此类依赖关系,但由于我自己传递了依赖关系,因此在初始化UnderTest时需要一个可传递的实例。

为了理想的价格,我理想地寻找类似于Mockito的行为,类似的东西。

const mockedDependency = ???
const underTest = new UnderTest(mockedDependency)

...
Proceed to write tests for underTest

这是我要测试的代码。请假设MockedDependency有其自己的依赖项,也将其传递给构造函数。

export default class UnderTest {

  private mockedDependency : MockedDependency

  constructor(mockedDependency: MockedDependency) {
    this.mockedDependency = mockedDependency
  }

  public methodUnderTest(parameter: string) {
    const mockedResult = this.mockedDependency.returnSomething(parameter)
    return this.doSomethingElse(mockedResult)
  }

  public methodUnderTest2(parameter1: string, parameter2: string) {
    const mockedResult = this.mockedDependency.returnSomething2(parameter1, parameter2)
    return this.doSomethingElse(mockedResult)
  }

  private doSomethingElse(mockedResult: string) {
    return mockedResult
  }
}

您将如何进行单元测试UnderTest类?奖励点是一种可以在每次测试中或通过输入设置mockedDependency方法结果的方法。

编辑:

对于那些偶然发现相同问题的人,可能的解决方案:

可以将变量强制转换为所需对象,并像这样重写方法:

const mockedDependency = {
  returnSomething(parameter: string) {
    return parameter    
  }
} as MockedDependency

const underTest = new UnderTest(mockedDependency)

它远非完美,但适用于更简单的情况。

提前感谢!

我一直在尝试模拟通过构造函数传入的类,到目前为止,我所遇到的所有示例都已经初始化了构造函数内部的依赖关系。以我的理解开玩笑...

回答如下:

这里是解决方法:

发布评论

评论列表 (0)

  1. 暂无评论