0

最近、Nimble 9.0.0 を使用するようにプロジェクトをアップグレードしました。同じ頃、コレクションの 1 つを type の辞書にする必要がありました[AnyHashable : AnyHashable]userInfoそのコレクションが変更されたときに実行され、辞書の一部として通知に追加されたものを送信するコードがあります。

通知を確認する方法は次のとおりです。 expect { try? cache.add(items: itemsToAdd)}.to(postNotifications(equal([itemAddedExpectedNotification])))

ディクショナリが実際に順序付けされていない場合、ユーザー情報ディクショナリが順序を維持することを期待しているように見えるため、値が同じであっても、これは失敗し始めました。userInfo 部分を明示的にテストする方法はありますか?

Xcode 12 からのエラー メッセージは次のとおりです。

Address and Undefined Behavior Sanitizers: expected to equal 
<[name = itemAdded, object = Optional(Cache count : 0, cache limit: -1), userInfo = Optional([AnyHashable("items"): [["key": Optional(AnyHashable("CachedItem-2")), "value": Optional(AnyHashable(2))], ["key": Optional(AnyHashable("CachedItem-3")), "value": Optional(AnyHashable(3))], ["value": Optional(AnyHashable(1)), "key": Optional(AnyHashable("CachedItem-1"))], ["key": Optional(AnyHashable("CachedItem-0")), "value": Optional(AnyHashable(0))]]])]>, got
 <[name = itemAdded, object = Optional(Cache count : 4, cache limit: -1), userInfo = Optional([AnyHashable("items"): [["key": Optional(AnyHashable("CachedItem-3")), "value": Optional(AnyHashable(3))], ["value": Optional(AnyHashable(1)), "key": Optional(AnyHashable("CachedItem-1"))], ["value": Optional(AnyHashable(0)), "key": Optional(AnyHashable("CachedItem-0"))], ["value": Optional(AnyHashable(2)), "key": Optional(AnyHashable("CachedItem-2"))]]])]>
4

1 に答える 1

0

これを使用できました-クイック/軽快な通知userInfoテストを使用してカスタム一致を作成し、独自のバリエーションを追加して複数の通知に一致させました。

于 2020-10-08T20:46:47.977 に答える