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

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


收到响应后,从我的api invoke方法中调用此方法。我想通过创建一个伪造的AWSAPIGatewayResponse对象进行单元测试。
我无法创建AWSAPIGatewayResponse对象。有没有一种方法可以在我的单元测试类中初始化此对象。我只想创建一个状态代码为AWSAPIGatewayResponse200300对象。任何帮助表示赞赏。

最佳答案

Pradeep,您好,欢迎来到StackOverflow。 👋

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

protocol Response {
  var statusCode: Int { get }
}

extension AWSAPIGatewayResponse: Response { }

func apiResponseResults(response: Response, sessionObject: Session) { ... }


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

struct TestResponse: Response {
  let statusCode: Int
}

// Use it like this
let response = TestResponse(statusCode: 200)


希望这可以帮助。

10-05 19:20