台风:如何注入 class 而不是实例

Typhoon: how to inject class instead of instance

我有一个用 Swift 编写的第三方库。该库提供了一个 class,其中包含一些 class 方法。使用 Typhoon,我想将 class 注入到我的一个 classes 中,以便在单元测试下,我可以注入一个提供假 class 方法的模拟 class。我是台风的新手,我浏览了文档,但还没有弄清楚如何去做。这对 Typhoon 是否可行?

是的,在用户指南中有关注入配置的部分展示了如何注入基元、标量值等。

注入一个class:

[initializer injectParameterWith:[SomeClass class]];

这也适用于 属性 注入和方法注入。

要注入选择器:

[initializer injectParameterWith:NSValueFromPrimitive(@selector(selectorValue))];

台风规则:

  • 对其他定义的引用被解析为构建的实例。
  • 简单对象、基元和标量值按原样注入(必须包装标量值和基元)。
  • 包含对其他定义的引用的集合(NSArray、NSSet 等)将这些引用解析为构建的实例。任何其他值按原样传递。

还有 Typhoon Config,它允许在外部 plist、json 或属性文件中存储配置、简单对象等。