私は Swift で作業しています。ページを更新したいので、通知を使用して送信しています。1 つの ViewController に通知を投稿し、別の ViewController にオブザーバーを追加していますが、完全に機能しています。私がやりたいのは、Swift でユニット テストを追加することです。多くのサイトをチェックしましたが、できませんでした。Swift は初めてで、どこから始めればよいかわかりません。
基本的に、ボタンをクリックすると通知が投稿され、次のビュー コントローラーが読み込まれると通知オブザーバーが追加されます。
ユニットテストをするにはどうすればいいですか
前もって感謝します
編集: コード
NSNotificationCenter.defaultCenter().postNotificationName("notificationName", object: nil)
そしてオブザーバーを次のように追加します
NSNotificationCenter.defaultCenter().addObserver(self, selector: "vvv:",name:"notificationName", object: nil)
ベストアンサー1
XCTest
通知をテストするためのクラスがあります:XCTNSNotificationExpectation
これらの期待値の 1 つを作成すると、通知を受信した際にそれが満たされます。次のように使用します。
// MyClass.swift
extension Notification.Name {
static var MyNotification = Notification.Name("com.MyCompany.MyApp.MyNotification")
}
class MyClass {
func sendNotification() {
NotificationCenter.default.post(name: .MyNotification,
object: self,
userInfo: nil)
}
}
// MyClassTests.swift
class MyClassTests: XCTestCase {
let classUnderTest = MyClass()
func testNotification() {
let notificationExpectation = expectation(forNotification: .MyNotification,
object: classUnderTest,
handler: nil)
classUnderTest.sendNotification()
waitForExpectations(timeout: 5, handler: nil)
}
}
XCTestCase
のexpectation(forNotification:object:handler:)
インスタンスを作成するための便利なメソッドですXCTNSNotificationExpectation
ですが、より細かく制御したい場合は、インスタンス化して自分で設定することもできます。ドキュメント。