我有一个我正在尝试编写的 SenTest 类,它使用 Category 来覆盖控制器类中的方法。我希望我的模拟控制器类调用 SenTest 类中的一个方法来确定如何处理各种测试。
例如:
- 在 testFoo 方法中设置一个 var。
- 在 testFoo 中,调用我的模拟控制器的重写方法。
- 让它回调到 SenTest 单例,以找出 testFoo 的行为方式。
这可能吗,还是我是个白痴?
我有一个我正在尝试编写的 SenTest 类,它使用 Category 来覆盖控制器类中的方法。我希望我的模拟控制器类调用 SenTest 类中的一个方法来确定如何处理各种测试。
例如:
这可能吗,还是我是个白痴?
事实证明,这样做的诀窍是在类别代码中进行关联引用,而不是在 SenTest 案例中。
例如,在类别中声明:
-(void)fakeMethodToSetTestData:(NSDictionary *)data;
并在该方法中设置关联引用以存储与“self”“关联”的数据。
在您的对象的测试用例中调用它,传入您的数据。
然后在您的测试用例中,调用您的:
-(void)realMethodInCategoryWhichIsBeingOverridden;
并且在此方法的类别实现中,从您在第一个方法中设置的关联引用中检索数据。
这将允许您在控制器上设置测试数据,以便您可以劫持委托链,例如,防止第二种方法进入网络并将您的测试数据返回到控制器的代码中。