受到this objc.io问题的启发,我决定在我的新项目上试用BDD。这是我的问题:我想测试MYCredentialStorage
以某种方式持有我要求它存储的凭据,即下次启动应用程序时,我会得到相同的凭证。 MYCredentialStorage
使用了keychain,因此我可以模拟它并验证调用SecItemAdd
或SecItemUpdate
函数,但我不应该测试(或知道)MYCredentialStorage
的私人方法,对吗?
我确定我不是唯一一个遇到这个问题的人,所以我要求你的建议,因为我对BDD很新。
提前谢谢。
答案 0 :(得分:1)
来自评论
MichałCiuba写道:
看看同一个objc.io问题的另一篇文章 - 依赖注入:objc.io/issue-15/dependency-injection.html。基本上你可以在MYCredentialStorage中注入一个keychain的模拟(但是你可能需要为SecItem *方法创建一个包装器。)
Ben Flynn写道:
我同意@MichałCiuba - 没有通用的方式来表示某个项目会在您的应用程序执行之间持续存在。如果你要去DI路线,我会做他说的。如果你没有做DI,我不会羞于嘲笑钥匙串存储或你的私人方法。我会明确指出测试,以准确表达期望是什么。