Fre*_*aya 6 xcode ios swift rx-swift
在MyModule中,我有这个枚举:
enum MyError: ErrorType {
case failToSendMessage
case notAuthenticated
case noResponseReceived
}
Run Code Online (Sandbox Code Playgroud)
在MyModuleTests中:
import XCTest
@testable import MyModule
class MyModuleTests: XCTestCase {
func testNotAuthenticated() {
myClass.doSomething()
.subscribeError { error in
XCTAssertEqual(error, MyError.notAuthenticated)
}
}
}
Run Code Online (Sandbox Code Playgroud)
doSomething返回一个Observable.
为什么我收到此错误消息:
Cannot invoke 'XCTAssertEqual' with an argument list ((ErrorType), MyError)?
您应该为MyError添加符合Equatable的扩展名.
extension MyError: Equatable
{
static func == (lhs: MyError, rhs: MyError) -> Bool {
switch (lhs, rhs) {
case (.failToSendMessage, .failToSendMessage):
return true;
case (.notAuthenticated, .notAuthenticated):
return true;
case (.noResponseReceived, .noResponseReceived):
return true;
default:
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,断言你的错误非常简单.
if let error = result.error {
XCTAssertTrue(error == MyError.notAuthenticated,"API returns 403");
} else {
XCTFail("Response was not an error");
}
Run Code Online (Sandbox Code Playgroud)
一世.