OCMock:存根 @dynamic 属性

2024-04-01

我正在尝试将单元测试添加到现有的 iOS 应用程序中,其中使用OCMock.

在此应用程序中,我们有一堆 CoreData 实体和生成的类。这些类显然包含@dynamic特性。

我尝试按如下方式存根这些属性之一:

self.event = [OCMockObject mockForClass:[ACEvent class]];
[[[self.event stub] andReturn:@"e46e1555-d866-4160-9b42-36d0fb9c29cd"] eventGUID];

重点是,它不起作用。显然是因为一个@dynamicproperty 默认情况下没有实现,在这种情况下依赖 CoreData 来提供它。我最终得到了一个 NSError:

-[NSProxy doesNotRecognizeSelector:eventGUID] called!

我见过其他问题,通过抽象协议背后的 CoreData 实体来解决这个问题(OCMock 与 Core Data 动态属性问题 https://stackoverflow.com/questions/1876568/ocmock-with-core-data-dynamic-properties-problem)。但由于这是现有的代码库,我没有这个选项,因为我无力重构所有内容。

任何人都可以提供另一种解决方案吗?

编辑: 顺便说一句,我刚刚找到了一个解决方案,但我担心它不能在所有情况下都有效。 我所做的是为测试目标中的这些方法提供一个示例、空实现。它有效,但我担心它可能会破坏依赖 CoreData 工作的其他测试。对此有何见解?


使用 OCMock,我总是为每个托管对象创建一个协议,然后为这些协议创建模拟,但正如您所说,您不能这样做,所以我建议创建一个假类,其属性与您想要的代码中使用的属性相同测试(对于每个NSManagedObject),然后在传递这些假对象时使用强制转换(要么使用 OCMock 并存根您想要的方法,要么只是创建假类的对象并设置您想要的属性)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OCMock:存根 @dynamic 属性 的相关文章

  • 如何去除 UIImageView 遮罩后的透明区域?

    在我的一个 iOS 应用程序中 我尝试使用以下命令剪切图像的一部分CGImageMask 我已成功使用以下代码屏蔽图像 UIImage maskImage UIImage referenceImage withMask UIImage ma
  • iOS UIView子类,将透明文本绘制到背景

    我想将文本绘制到 UIView 上的子类上 以便文本从形状中切出 并且视图后面的背景显示出来 就像在 OSX Mavericks 徽标中找到的那样here http www n3rdabl3 co uk wp content uploads
  • nspredicate 数组中的多个项目

    如何使用NSPredicate满足多个条件 NSEntityDescription entity NSEntityDescription entityForName MessageData inManagedObjectContext ma
  • 使用 iOS 7 检索设备 WiFi MAC 地址

    我们的应用程序使用设备 WiFi MAC 地址来唯一标识设备 根据苹果文档 https developer apple com news id 8222013a我们将开始使用 UIDevice 的identifierForVendor 属性
  • GCD 和线程

    我想了解一些有关 GCD 和线程的知识 我的视图控制器中有一个 for 循环 它要求我的模型执行一些异步网络请求 因此 如果循环运行 5 次 模型将发出 5 个网络请求 考虑到我正在使用 NSURLConnection 的 sendAsyn
  • &(与符号)和 && 或 | 之间的区别(管道)和||在 Objective-C 中?

    我想知道Objective C是否关心我是写 还是 我相信一个与号 会或应该导致如果左侧已经为假 则右侧将不会被评估 这适用于 Objective C 吗 Yes 这些运算符在 C 和 Objective C 中的功能相同 就像在 C 中一
  • 根据一个属性对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个名为 NSMutableArrayallItems其中有以下内容ProductData目的 每个对象都有cid cname ctype and cimage 正如您在下面看到的 json 对象没有按顺序出
  • 在完成块中保留循环

    在我的课堂上 我创建了这个方法 void refreshDatasourceWithSuccess CreateDataSourceSuccessBlock successBlock failure CreateDataSourceFail
  • 核心数据迁移后出现 NSRangeException

    在向我的应用程序添加新的核心数据模型版本后 我执行了轻量级迁移 显然成功了 迁移的文件加载正常 但在第一次尝试通过特定关系访问属性时 应用程序崩溃并显示NSRangeException NSArrayM objectAtIndex inde
  • 如何在 UITableView 中显示零行的表格

    我正在动态地将内容加载到 UITableView 中 如果有数据 表格需要显示数据 如果没有数据 表格应显示普通页面 但在我的应用程序中 表格显示带有两条分隔线的普通页面 我需要删除此分隔线并显示纯白色页面 请建议 任何帮助 将不胜感激 如
  • 如何在 iOS 中通过 Twitter API 获取用户电子邮件地址?

    我尝试了多个 SDK 但无法从任何资源获取电子邮件 ID 我努力了FHSTwitterEngine为此目的 但我没有得到解决方案 FHSTwitterEngine twitterEngine FHSTwitterEngine sharedE
  • 如何使用 NSUserDefaults 正确工作(检索值)

    我的代码中有一个简单的方法 如下所示 BOOL isFirstTimeLogin NSString t gName NSString stringWithFormat NSUserDefaults standardUserDefaults
  • 从一个模态视图无缝翻转到另一个模态视图,而不显示纯色背景

    我的 iPad 应用程序的 UI 如下 当我点击Settings按钮 我希望对话框水平翻转以显示设置对话框 我这个工作正常 但是 当对话翻转时会显示背景颜色 如你看到的 有什么办法可以让对话框翻转时不显示该颜色块吗 我希望它看起来更加无缝
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 在实例化对象之前是否可以检查故事板中是否存在标识符?

    在我的代码中我有这一行 但我想知道是否有办法检查是否 一些控制器 在我将它与 一起使用之前就存在实例化ViewControllerWithIdentifier 方法 如果标识符不存在 则应用程序崩溃 如果没有好的方法 这并不是一个大问题 我
  • 接收者'ClassName'是一个转发类,对应的@interface可能不存在

    我目前正在寻找一个UIPickerTable在 UIPickerView subviews 内 所以我循环并执行isKindOfClass UIPickerTable class 它有效 但由于 UIPickerTable 的标头未公开 我
  • Objective-C 中发送给对象的消息可以被监听或者打印出来吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中拦截方法调用 https stackoverflow com questions 1618474 intercept method call in objective c 如
  • 如何在 UICollectionView 中将行居中?

    我有一个UICollectionView与随机细胞 有什么方法可以让我将行居中吗 默认情况下它是这样的 x x x x x x x x x x x x x x 这是所需的布局 x x x x x x x x x x x x 我必须做这样的事
  • 如何为 UIImageView 随机化器实现滑动手势

    我一直在浏览大量的教程和问题 但似乎找不到我要找的东西 我有一种感觉 我只是错过了一个简单的步骤 我仍在学习诀窍 所以请承受和我一起做这个 我正在 xcode 4 3 3 上制作图像随机化器 并且我已经能够使用按钮来随机化图像 但我希望它能
  • 将图像存储在核心数据中

    我想在更新记录时存储每位员工的图像 我怎样才能做到这一点 我有一个字典 存储员工的姓名 ID 和部门 现在我想将图像保存在一起 Core Data 支持 二进制数据 类型 当您定义具有二进制数据字段的模型时 它会创建具有 NSData 字段

随机推荐

  • Java中识别具有相同内容的图像

    前段时间 我花了一些时间寻找如何确定两个图像是否相同的方法 以便回答这个问题 https stackoverflow com questions 8644960 java library to compare image similarit
  • 对于 Makefile 变量的每个目标

    我的 makefile 如下所示 apps app1 app2 app3 all dir app1 app2 app3 zip cleanup 现在我想在列表上做一些循环apps多变的 就像是 loop on apps endloop 是否
  • Leaflet:突然我收到此错误消息:无法加载资源:服务器响应状态为 403 ()

    突然我收到此错误消息 这对我来说很奇怪 因为我没有接触过地图部分 Failed to load resource the server responded with a status of 403 在寻找线索时 我发现了这个过时的信息 ht
  • 为什么按 Ctrl+“+”会在文本框中产生蜂鸣声?

    我正在与C and Windows Forms并想使用Ctrl Oemplus 作为一个函数key对于我的申请 我用一个German keyboard该键位于字母 P 右侧 2 个键 即 每当我按下此键与Ctrl重点是TextBox我听到一
  • 对象不包括列表理解中的方法

    这个问题与我之前的问题 https stackoverflow com questions 65021583 list comprehensions with class objects以及比尔的回应 我在 subfile py 中有一个名
  • MySQL 外键 - 如何强制跨表一对一?

    如果我在MySQL中有一个表代表一个基类 并且我有一堆表代表派生类中的字段 每个表都用外键引用回基表 有什么方法可以让MySQL强制派生表和基表之间的一对一关系 还是必须在代码中完成 以下面的快速 n 脏模式为例 有没有办法让MySQL确保
  • 评估 C/C++ 内存泄漏时的虚拟内存与物理内存

    我有一个 C 应用程序 我试图解决内存泄漏问题 但我意识到我并不完全理解虚拟内存和物理内存之间的区别 由于 导致的结果top 所以 16 8g 虚拟 111m 物理 4406 um 20 0 16 8g 111m 4928 S 64 7 2
  • Node.js JavaScript:在服务器上模拟按键(如宏)

    我正在尝试获取一个 node js 脚本来模拟按键 例如向上箭头或 a 按钮 具体来说 我正在尝试克隆Twitch 玩口袋妖怪 http www twitch tv twitchplayspokemon 基本上 每当通过 IRC 发送命令
  • 如何为 QVBoxLayout 小部件的隐藏/显示设置动画

    I have this horizontal layout of a QWidget subclass using QHBoxLayout 我希望顶部小部件以滑动动画隐藏 显示 我读过了本文 https qt project org for
  • 如何在 TypeScript 中链接/连接/关联两个类字段的类型?

    如何让 TypeScript 识别类中一个字段的值限制另一个字段的类型 示例代码 操场 https www typescriptlang org play code MYGwhgzhAEDCYBdoG9oAcCuAnLAKAlCgPQBUA
  • 将操作数放在 getopt() 的前面

    使用getopt C 中的函数 可以这样做 program a arg for a b arg for b c operand1 operand2 并且它的工作没有问题 但是 如何让它以这种方式工作 program operand1 ope
  • 如何找到 MIT 方案中出现错误的地方?

    当你在 MIT 方案中遇到错误时 它不会告诉你错误发生在哪里 例如 它只打印如下内容 Unbound variable top left To continue call RESTART with an option number REST
  • data.table 中多次转换时如何避免相同的列名?

    我尝试对同一列进行多次转换data table并发现这个答案 https stackoverflow com a 16367829 3409615 但是 如果我按照那里的步骤操作 我会得到相同的列名称 而不是mean Obs 1 etc l
  • 如何为 php mvc 构建一个好的路由器

    我正在尝试 php mvc 但遇到了以下问题 我的请求和路由器类非常简单 我想扩展主题以处理来自子文件夹的控制器调用 并且控制器类函数应该能够拾取 url 变量发送它抛出 get 和 post 我的路由器如下所示 class Router
  • helm 图表模板:如果值不存在,则默认为 true

    我试图声明 如果变量为 true 或不存在 即 var 的默认值为 true 则应存在 helm 模板中的代码块 以下作品 if or Values livenessProbe not hasKey Values livenessProbe
  • 在Spyder中创建子单元格

    是否有任何解决方法可以在 Spyder 中创建子单元 例如 我知道与 Cell 1 我可以创建一个新的单元格 但是有没有办法创建一个子单元格 该子单元格分组在单元格下 如下所示 Cell 1 1 我已经发现this https github
  • scala:如何以函数式方式处理验证

    我正在开发一种方法 如果它通过了一系列条件 则该方法应该保留对象 如果任何 或多个 条件失败 或出现任何其他类型的错误 则应返回包含错误的列表 如果一切顺利 则应返回已保存的实体 我正在考虑这样的事情 当然 这是伪代码 request bo
  • 运行控制器方法的异步 PHP 调用

    我想在按钮单击事件上执行 localhost codeigniter controller method 该方法将从网页中提取关键字并将其存储在数据库中 其中有多个子方法也应该在后台运行 我不想让用户在此期间等待 我读this https
  • 错误:对于类字符的对象没有整洁的方法

    我正在尝试转换表中的以下元素列表 下面您可以找到创建列表的方法 alt 1 data long gt ggpubr compare means value COND group by c SES signals method t test
  • OCMock:存根 @dynamic 属性

    我正在尝试将单元测试添加到现有的 iOS 应用程序中 其中使用OCMock 在此应用程序中 我们有一堆 CoreData 实体和生成的类 这些类显然包含 dynamic特性 我尝试按如下方式存根这些属性之一 self event OCMoc