【问题标题】:How to override and test a dependent method in Objective C or Swift如何在 Objective C 或 Swift 中覆盖和测试依赖方法
【发布时间】:2016-11-17 05:06:20
【问题描述】:

我正在使用 XCTest 对我的 Objective C 代码进行单元测试。我必须测试又调用 B() 的方法 A()。有没有办法可以覆盖 B() 以便我可以专注于测试 A()?

下面给出一个例子。

- (void) A{
    int x = [self B];
    if(x == something)
    {
      // DoSomething
    }
    else
    {
      // DoSomething else
    }
}

我的目的是测试 A() 的多个响应/返回 B() 的值。

【问题讨论】:

    标签: objective-c swift xcode macos xctest


    【解决方案1】:

    依赖注入是一种允许您在单元测试期间更改实现的技术。谷歌这个术语,学习如何让你的代码更可测试。

    【讨论】:

      【解决方案2】:

      您可以创建对象的模拟版本:

      class MyClass {
          func a() -> String {
              return b("Hello")
          }
      
          func b(input: String) -> String {
              return string.capitalizedString
          }
      }
      
      class MockMyClass: MyClass {
          var mockedBValue: String = ""
      
          override func b(input: String) -> String {
              return mockedBValue
          }
      }
      
      // in your test:
      let object = MockMyClass()
      object.mockedBValue = "fdf"
      
      let str = object.a()
      //str now eqauls to "fdf"
      

      不确定你的具体实现是什么,但这应该会给你一个提示。

      你也可以看看http://ocmock.org/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-17
        相关资源
        最近更新 更多