gpt4 book ai didi

objective-c - 测试 NSDocument

转载 作者:行者123 更新时间:2023-12-03 17:22:40 26 4
gpt4 key购买 nike

我刚刚开始进行单元测试,我想知道如何正确测试 NSDocument 子类?

在我的测试设置中,我可以初始化文档,但这并不能反射(reflect)文档在应用程序使用时的设置方式,特别是未建立 IBOutlet 连接和关键消息,例如 - (void) windowControllerDidLoadNib:(NSWindowController *)aController 未被调用。

那么获取完全初始化的 NSDocument 对象以用于测试的正确方法是什么?

最佳答案

您可以这样开始:

#import <Cocoa/Cocoa.h>
#import <XCTest/XCTest.h>
#import "Document.h"

@interface DocumentTests : XCTestCase {
Document *document;
NSWindowController *controller
}
@end

@implementation DocumentTests

- (void)setUp {
document = [[Document alloc] init];
[document makeWindowControllers];
controller = (NSWindowController *)[document windowControllers][0];
}

- (void)testLoadingWindow
{
XCTAssertNotNil(controller.window);
}

- (void)testTextFieldOutletsIsConnected
{
[controller window]; //kick off window loading
XCTAssertNotNil(document.textField);
}
//For asynchronous testing use XCTestExpectation
//[self expectationWithDescription:@"Expectations"];
//[self waitForExpectationsWithTimeout:3.0 handler:nil];

正确做法:如果您想测试它,请不要将任何 UI 内容放入您的文档 (windowControllerDidLoadNib) 中。单一责任。如何?只需实现 makeWindowControllers

- (void)makeWindowControllers
{
CustomWindowController *controller = [[CustomWindowController alloc] init];
[self addWindowController:controller];
}

通过窗口 Controller ,您可以随时访问您的文档

- (CustomDocument *)document
{
return [self document];
}

关于objective-c - 测试 NSDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com