【问题标题】:Cannot Stub method "title" because no such method exist in the mocked class OCMock不能存根方法“标题”,因为模拟类 OCMock 中不存在此类方法
【发布时间】:2014-06-14 23:43:19
【问题描述】:

我正在编写这个单元测试:

   - (void)testCellValues
{
    id bookMock = [OCMockObject mockForClass:[LBBook class]];
    [[[bookMock stub] andReturn:@"Book Title"] title];
}

当然后面还有一些代码。但是此时我在执行测试时遇到了这个错误:

[LBReviewsDashboardDataSourceTest testCellValues] failed: OCMockObject[LBBook]: cannot stub or expect method 'title' because no such method exists in the mocked class.

但是LBBook 类具有title 属性。这是 LBBook 类:

@interface LBBook : LBManagedObjectFactory

@property (nonatomic, retain) NSString * title;

@end

我无法意识到这里发生了什么,如果类的标题为 attribute,为什么 OCMock 会返回该错误?

提前致谢。

【问题讨论】:

  • LBBook 的继承层次是什么? title 属性是如何实现的?实现中的属性是否有@synthesize
  • 是的,它是@ErikDoernenburg,LBBook 的层次结构是一个NSManagedObject

标签: ios objective-c ocmock


【解决方案1】:

CoreData 使用动态属性。这些在 OCMock 中还没有得到适当的支持。可以改为存根 valueForKey:。另见:OCMock: stub a @dynamic propertyOCMock with Core Data dynamic properties problem

【讨论】:

  • 谢谢答案!
猜你喜欢
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2021-02-09
相关资源
最近更新 更多