首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟NSWindowController

模拟NSWindowController
EN

Stack Overflow用户
提问于 2012-02-13 23:38:40
回答 1查看 223关注 0票数 0

我有一个Mac应用程序,实际上是一个NSStatusItem,我正在尝试测试它的首选项窗口。我将此代码用作模型,因为它的工作方式与我的代码非常相似,只是我的窗口被初始化并显示在applicationDidFinishLaunching以外的函数中。http://bit.ly/wH6QOk

我收到错误:未调用预期的方法:窗口

我不明白为什么会这样。下面是我的测试代码:

代码语言:javascript
复制
-(void)testPreferencesInit {    
    mockWindowController = [OCMockObject mockForClass:[NSWindowController class]];
    id mockWindow = [OCMockObject mockForClass:[NSWindow class]];

    [[[mockWindowController expect] andReturn:mockWindow] window];
    [[mockWindow expect] makeKeyAndOrderFront:weathervane];

    [weathervane showPreferences:nil];

    [mockWindowController verify];
    [mockWindow verify];

    id windowController;
    object_getInstanceVariable(weathervane, "windowController", (void **)&windowController);
    GHAssertEqualObjects(windowController, mockWindowController,
                                @"windowController not set on appDelegate");
    GHAssertTrue([[windowController windowNibName] isEqualToString:@"Preferences"], @"Window Controller nib name not set");

    object_setInstanceVariable(weathervane, "windowController", nil);
    mockWindowController = nil;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-19 13:26:22

从您的代码中并不清楚您希望windowController如何指向mockWindowController。你是否像Matt Gallagher的文章中那样实现了类别初始化器和invokeSupersequent代码?

从您的代码中可以看出,windowController是weathervane类的一个属性。我认为最简单的方法是避免尝试覆盖NSWindowController的初始化,而只是将你的模拟传递给你的控制器:

代码语言:javascript
复制
-(void)testPreferencesInit {    
    mockWindowController = [OCMockObject mockForClass:[NSWindowController class]];
    id mockWindow = [OCMockObject mockForClass:[NSWindow class]];

    [[[mockWindowController expect] andReturn:mockWindow] window];
    [[mockWindow expect] makeKeyAndOrderFront:weathervane];

    weathervane.windowController = mockWindowController;

    [weathervane showPreferences:nil];

    [mockWindowController verify];
    [mockWindow verify];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9263283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档