unit-testing - iPhone单元测试OCMock,如何模拟只读变量?

标签 unit-testing mocking readonly ocmock

我们一直都是这样使用OCMock的,但是对于一些只读的属性变量好像不行,比如NavigationController之类的,是只读的,set mock one是不生效的。

你有没有遇到过这个棘手的问题,你是如何解决的?任何想法将不胜感激,提前感谢你们这些聪明人。

id mockWebView = [OCMockObject mockForClass:[UIWebView class]];
[[mockWebView expect] loadHTMLString:...];
object_setInstanceVariable(viewController, "webView", mockWebView);

最佳答案

使用部分模拟:

id mockController = [OCMockObject partialMockForObject:viewController];
[[[mockController] stub] andReturn:mockWebView] webView];

[controller doSomethingWithWebView];

如果 viewController 直接访问 ivar,这将不起作用,但如果它通过访问器访问 ivar,它会起作用:self.webview,这通常是您访问属性的方式。

关于unit-testing - iPhone单元测试OCMock,如何模拟只读变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433812/

相关文章:

unit-testing - 与 TDD 作斗争的人们对遗漏断言有何看法?

readonly - UIPATH - 如何检查 Excel 文件是否处于 "Read only"模式

c# - 以编程方式更改 DataGridView 行上的只读模式

c# - 用于单元测试的模拟周期性计时器

java - 当测试按设置运行时,单元测试失败?

java - 为什么 Mockito 类型匹配器匹配不相关的对象?

android - 如何在 Android 测试中正确模拟 HttpGet 调用

c# - const/readonly 与 Cheat Engine 等程序

php - 模拟测试对象的公共(public)方法

unit-testing - Jest mock /监视 Mongoose 链式(查找、排序、限制、跳过)方法