Ios 在代码中使用可测试的自由函数

Ios 在代码中使用可测试的自由函数,ios,swift,tdd,Ios,Swift,Tdd,我目前在一个应用程序中使用了几个worker类,它们只包含一个函数 func updateFoo(with foo: SomeFoo, dependency: DependencyType = ConcreteDependency() { ... } 该函数执行类名描述的操作: protocol FooUpdatable { func updateFoo(with foo: SomeFoo) } class FooUpdater: FooUpdatable { let depen

我目前在一个应用程序中使用了几个worker类,它们只包含一个函数

func updateFoo(with foo: SomeFoo, dependency: DependencyType = ConcreteDependency() {
  ...
}
该函数执行类名描述的操作:

protocol FooUpdatable {
  func updateFoo(with foo: SomeFoo)
}

class FooUpdater: FooUpdatable {
  let dependency: DependencyType

  init(dependency: DependencyType = ConcreteDependency()) {
    self.dependency = dependency
  }

  func updateFoo(with foo: SomeFoo) {
    ...
  }
}
我认为其中一些应该是自由函数,而不是在类中——但当前体系结构的一个好处是可测试性。 在测试中,我可以通过构造函数注入将这种依赖性替换为模拟,但不确定如何最好地使用自由函数来实现这一点

func updateFoo(with foo: SomeFoo, dependency: DependencyType = ConcreteDependency() {
  ...
}

在Objective-C中,模拟框架可以通过滑动来实现这一点,对吗?有没有办法在Swift中实现同样的效果?

不幸的是,我对Swift了解不多,但听起来是个有趣的问题。平衡测试能力和干净代码有时不是一个容易的决定。不幸的是,我对swift不太了解,但听起来像是一个有趣的问题。平衡测试能力和干净代码有时不是一个容易的决定。