I am new to use mocking stubs could you please help any one!!
when doing signUp tests every time getting error like XCTAssertEqual failed: ("201") is not equal to ("200") .
How to test the hardcode signUp details without using backend data
How to test the response of status codes for success and failures
any help should be appreciated - ThankYou
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))
}
}
}
}
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)
}
}
Write in your test case with endpoint closures as shown below
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))
}
}
}