小编Nic*_*nta的帖子

如何使用 OCMock 测试是否在完成处理程序块内调用对象的方法?

我有一个方法:

@implementation SomeClass

- (void)thisMethod:(ObjectA *)objA {
    [APIClient connectToAPIWithCompletionHandler:^(id result){
        if (result) [objA methodOne];
        else [objA methodTwo];
    }];
}
Run Code Online (Sandbox Code Playgroud)

有没有办法验证methodOne或在调用methodTwo时会被调用?thisMethod:基本上我只是想存根该connectToAPIWithCompletionHandler:方法。现在我可以通过 swizzlingconnectToAPIWithCompletionHandler:方法来做到这一点。但我想知道是否有更好的方法。

在这里发现了类似的问题,但它使用的是实例方法,而在我的例子中是类方法。

unit-testing objective-c ocmock ios

5
推荐指数
1
解决办法
2257
查看次数

NSXMLParser 不解析内部实体

我有这个声明内部实体的 XML n

NSString *xmlString = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<!DOCTYPE JMdict [<!ENTITY n \"noun\">]>
    <JMdict>
         <entry>
             <sense>
                 <pos>&n;</pos>
                 <gloss>love</gloss>
             </sense>
         </entry>
    </JMdict>";
Run Code Online (Sandbox Code Playgroud)

并用于NSXMLParser解析它

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[xmlString dataUsingEncoding:NSUTF8StringEncoding]];
[parser setDelegate:self];
[parser parse];
Run Code Online (Sandbox Code Playgroud)

我实现了委托方法

- (void)parser:(NSXMLParser *)parser foundInternalEntityDeclarationWithName:(NSString *)name value:(NSString *)value {
    NSLog(@"foundInternalEntityDeclarationWithName: %@ = %@", name, value);
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    NSLog(@"<%@>", elementName);
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    NSLog(@"</%@>", elementName);
} …
Run Code Online (Sandbox Code Playgroud)

xml macos objective-c

5
推荐指数
1
解决办法
290
查看次数

标签 统计

objective-c ×2

ios ×1

macos ×1

ocmock ×1

unit-testing ×1

xml ×1