【问题标题】:Unit testing methods containing AWSAPIGatewayResponse in swiftswift中包含AWSAPIGatewayResponse的单元测试方法
【发布时间】:2019-04-18 07:55:55
【问题描述】:

我有以下方法,我正在尝试在 iOS/Swift 中对此进行单元测试

func apiResponseResults(response: AWSAPIGatewayResponse, sessionObject: Session) {
    if response.statusCode == 200 {
        // code
    } else {
        // code
    }
}

收到响应时,从我的 api invoke 方法调用此方法。我想通过创建一个假的AWSAPIGatewayResponse 对象来对此进行单元测试。 我无法创建 AWSAPIGatewayResponse 对象。有没有办法在我的单元测试类中初始化这个对象。我只想创建一个AWSAPIGatewayResponse 对象,其状态代码为200300。任何帮助表示赞赏。

【问题讨论】:

    标签: ios swift amazon-web-services unit-testing aws-api-gateway


    【解决方案1】:

    您好Pradeep,欢迎来到 StackOverflow。 ?

    您可以使用来自AWSAPIGatewayResponse 的您感兴趣的功能子集定义一个协议,使AWSAPIGatewayResponse 符合它,并使apiResponseResults(response:, session:) 期望该类型的值。

    protocol Response {
      var statusCode: Int { get }
    }
    
    extension AWSAPIGatewayResponse: Response { }
    
    func apiResponseResults(response: Response, sessionObject: Session) { ... }
    

    在您的测试中,您可以定义一个符合Response 的测试替身,并将其用作您方法的输入参数。

    struct TestResponse: Response {
      let statusCode: Int
    }
    
    // Use it like this
    let response = TestResponse(statusCode: 200)
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 2010-09-27
      • 1970-01-01
      • 2022-06-23
      • 1970-01-01
      相关资源
      最近更新 更多