I'm studying unit testing in swift and I would like to know if I'm doing the right way.
Here I have the model
struct ChangePasswordRequest: Encodable {
var email: String
var newPassword: String
var token: String
}
And here the unit test
import XCTest
@testable import MyProject
class ChangePasswordRequestTests: XCTestCase {
var changePasswordRequest: ChangePasswordRequest!
override func tearDown() {
// Put teardown code here. This method is called after the invocation of each test method in the class.
changePasswordRequest = nil
super.tearDown()
}
func testChangePasswordRequest() {
// given
let email = "[email protected]"
let newPassword = "abc123"
let token =
"""
rF1rHbYVCpcfyo6K2e7Q68QvKYdeOMt0vDXYehggGU3kx8XiuGmQylXabxbGAyUmSK9RnbL
"""
// when
changePasswordRequest = ChangePasswordRequest(email: email, newPassword: newPassword, token: token)
let requestJSON = """
{"email":"\(email)","token":"\(token)","newPassword":"\(newPassword)"}
"""
changePasswordRequest = ChangePasswordRequest(email: email, newPassword: newPassword, token: token)
guard let encodedRequest = try? JSONEncoder().encode(changePasswordRequest) else {
XCTFail()
return
}
// then
XCTAssertEqual(String(data: encodedRequest, encoding: .utf8)!, requestJSON, "Any JSON key differs from model.")
}
}
I never worked with unit test. It's possible to improve this test?