在 RxSwift 中使用 Stub 提供程序进行注册验证的 XcTest 案例
Posted
技术标签:
【中文标题】在 RxSwift 中使用 Stub 提供程序进行注册验证的 XcTest 案例【英文标题】:XcTest cases for signUp Validation using Stub provider in RxSwift 【发布时间】:2017-11-09 07:14:52 【问题描述】:我是使用模拟存根的新手,请您帮助任何人!
在每次进行注册测试时遇到 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))
【问题讨论】:
请发布代码而不是代码图片。 【参考方案1】: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))
【讨论】:
以上是关于在 RxSwift 中使用 Stub 提供程序进行注册验证的 XcTest 案例的主要内容,如果未能解决你的问题,请参考以下文章