明白な理由から、私はテストコードで私の生産コードを汚染したくありません。私はXCodeのUIテストフレームワークを使用しようとしています。実行時には、クラスの1つを、テスト対象にのみ存在する別のクラスに置き換えたいと思います。XCTest:実行時にクラスを挿入する方法
どのように私はこれを達成することができますか?
明白な理由から、私はテストコードで私の生産コードを汚染したくありません。私はXCodeのUIテストフレームワークを使用しようとしています。実行時には、クラスの1つを、テスト対象にのみ存在する別のクラスに置き換えたいと思います。XCTest:実行時にクラスを挿入する方法
どのように私はこれを達成することができますか?
あなたはテストモックと呼ばれるものが必要です。
モッククラスをテストファイルで作成し、モックするクラスを拡張します。次に、あなたのテストでは、あなたがモックを使用して、元のクラスのプロパティを変更
class MockHttp extends HttpService {
var getWasCalledCount = 0
override func get(request: URLRequest) {
getWasCalledCount = getWasCalledCount + 1
}
}
(私はsetUpメソッドでそれに対するのが好き)
override func setUp() {
var mockHttp = MockHttp()
classIWantToInjectWithMock = ClassIWantToInjectWithMock(http: mockHttp)
}
私はこれが役に立てば幸い!良い一日を!
これはUIテストでは機能しません。 – user1366265
[SBTUITestTunnel](https://github.com/Subito-it/SBTUITestTunnel)を参考にしてみてください。 –
彼らの文書によると、SBTUITestTunnelは、 "アプリケーションでインスタンス化するインスタンスと、テストコードでインスタンス化する"コンポーネントが必要です。私は実際にテストに関連するコードを生産中に避けたいと思っています。 – user1366265