快速/灵活的通知用户信息测试

Posted

技术标签:

【中文标题】快速/灵活的通知用户信息测试【英文标题】:Quick/Nimble notification userInfo testing 【发布时间】:2019-07-22 17:48:37 【问题描述】:

我正在查看快速/灵活的通知支持,例如:

expect 
    NotificationCenter.default.postNotification(testNotification)
.to(postNotifications(equal([testNotification]))

有没有办法让我掌握返回的通知以检查用户信息? 我的目标是调用一个发布通知的方法,然后检查该通知 userInfo 并确保键/值对正确。

快速:2.1.0 敏捷:8.0.1

【问题讨论】:

【参考方案1】:

我最终这样做了:

func equalName(_ expectedName: Notification.Name, condition: @escaping (([AnyHashable: Any]) -> Bool)) -> Predicate<[Notification]> 
    return Predicate.define("equal <\(stringify(expectedName))>")  actualExpression, msg in
        guard let actualValue = try actualExpression.evaluate() else 
            return PredicateResult(status: .fail, message: msg)
        

        let actualNames = actualValue
            .filter  $0.name == expectedName 
            .filter  notification in
                guard let userInfo = notification.userInfo else 
                    return false
                

                return condition(userInfo)
            
            .compactMap  $0.name 
        let matches = actualNames.contains(expectedName)
        return PredicateResult(bool: matches, message: msg)
    


然后在呼叫站点您可以提供条件..

【讨论】:

以上是关于快速/灵活的通知用户信息测试的主要内容,如果未能解决你的问题,请参考以下文章

基于JAVA SSM springboot实现的抗疫物质信息管理系统(《精品毕设》源码+sql+论文)主要功能:用户区域物质类型物质详情物质申请和审核以及我的申请和通知公告以及灵活控制菜单权限(代码片

如何快速解析xml以及灵活定义key查找信息

定期快速触发本地通知

Option键竟然如此强大,99.9%的Mac用户不知道的高效秘技

运维告警管理——告警的灵活分派

运维告警管理——告警的灵活分派