NSNotificationのユニットテストの書き方 質問する

NSNotificationのユニットテストの書き方 質問する

私は 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)
    }
}

XCTestCaseexpectation(forNotification:object:handler:)インスタンスを作成するための便利なメソッドですXCTNSNotificationExpectationですが、より細かく制御したい場合は、インスタンス化して自分で設定することもできます。ドキュメント

おすすめ記事