0

我是使用模拟存根的新手,请您帮助任何人!

每次进行注册测试时都会遇到 XCTAssertEqual failed: ("201") is not equal to ("200") 之类的错误。

  • 如何在不使用后端数据的情况下测试硬编码注册详细信息

  • 如何测试状态码对成功和失败的响应

任何帮助都应该不胜感激 - 谢谢

class LoginServiceUnitTests: XCTestCase {
    var stubProvider = RxMoyaProvider<RestApi>()
    override func setUp() {
        super.setUp()
        stubProvider = RxMoyaProvider<RestApi>(stubClosure: MoyaProvider.immediatelyStub)
    }

    func testSignUpForSuccessResponse() {

        let userData = Creator()
        userData?.username = "raj@naresh.com"
        userData?.password = "password"
        userData?.displayName = "username"
        let target: RestApi = .signUp(userData!)
        stubProvider.request(target) { result in
            if case let .success(response) = result {
                XCTAssertEqual("201", String(response.statusCode))

            }
        }
    }
}
4

1 回答 1

0
extension XCTest {

    func customStatusCodeEndPoint(_ target: (RestApi), statusCode: Int) -> Endpoint<RestApi> {
        let url = target.baseURL.appendingPathComponent(target.path).absoluteString
        return Endpoint(url: url, sampleResponseClosure: {.networkResponse(statusCode, target.sampleData)}, method: target.method, parameters: target.parameters, parameterEncoding: target.parameterEncoding)
    }
}

使用端点闭包在您的测试用例中编写,如下所示

func testSignUpURLRequestForStubbedData() {

    let endpointClosure = { (target: RestApi) -> Endpoint<RestApi> in
        self.customStatusCodeEndPoint(target, statusCode: 201)
    }
    stubProvider = RxMoyaProvider<RestApi>(endpointClosure: endpointClosure, stubClosure: RxMoyaProvider.immediatelyStub)
    let userData = Creator()!
    userData.username = "raj@naresh.com"
    userData.password = "password"
    userData.displayName = "Surya"
    let target: RestApi = .signUp(userData)
    stubProvider.request(target) { result in
        if case .success(let response) = result {
            log.debug(response.statusCode)
            XCTAssertEqual("201", String(response.statusCode))

        }
    }
}
于 2017-11-23T04:43:56.417 回答