【问题标题】:Advice on BDD for iOS needed需要有关适用于 iOS 的 BDD 的建议
【发布时间】:2015-01-26 00:38:39
【问题描述】:

受到objc.io 上的this 问题的启发,我决定在我的新项目中尝试 BDD。这是我的问题:我想测试MYCredentialStorage 是否以某种方式保留了我要求它存储的凭据,即下次启动应用程序时,我将获得相同的凭据。 MYCredentialStorage 使用钥匙串,所以我可以模拟它并验证 SecItemAddSecItemUpdate 函数是否被调用,但我不应该测试(或知道)MYCredentialStorage 的私有方法,对吧?
我确信我不是唯一一个面临这个问题的人,所以我征求你的意见,因为我对 BDD 很陌生。 提前谢谢你。

【问题讨论】:

  • 查看来自同一 objc.io 问题的另一篇文章 - 依赖注入:objc.io/issue-15/dependency-injection.html。基本上你可以将钥匙串的模拟注入MYCredentialStorage(但也许你需要为SecItem* 方法创建一个包装器)。
  • 我同意@MichałCiuba - 没有通用的方式来表示项目将在您的应用程序执行之间持续存在。如果你要走DI路线,我会照他说的做。如果你不做 DI,我不会羞于嘲笑钥匙串存储或你的私有方法。我会在测试的命名中明确表达期望是什么。
  • 谢谢,如果可以的话,我会接受你的两个 cmets 作为答案。我最终使用了构造函数注入和模拟钥匙串。

标签: ios unit-testing bdd xctest ocmock


【解决方案1】:

来自 cmets

Michał Ciuba 写道:

查看来自同一 objc.io 问题的另一篇文章 - 依赖注入:objc.io/issue-15/dependency-injection.html。基本上你可以将钥匙串的模拟注入到 MYCredentialStorage 中(但也许你需要为 SecItem* 方法创建一个包装器)。

本弗林写道:

我同意@MichałCiuba 的观点 - 没有通用的方式来表示项目将在您的应用执行之间持续存在。如果你要走DI路线,我会照他说的做。如果你不做 DI,我不会羞于嘲笑钥匙串存储或你的私有方法。我会在测试的命名中明确表达期望是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多