带有args的OCMock存根不返回预期值

时间:2017-05-10 21:13:38

标签: ocmock

我正在尝试为MDN编写单元测试,但我遇到了一些麻烦。

在Xcode中我试图使用OCMock(和Specta,Expecta)来测试getVideoInfo方法。此方法的一部分创建AVURLAsset并从中退出一系列轨道。

在这个示例测试中,我正在尝试存根tracksWithMediaType方法。我尝试了几种变化,但没有运气。结果包括从EXC_BAD_ACCESS异常到测试崩溃和测试失败。

avAssetTrack = OCMClassMock([AVAssetTrack class]);

        id mockAVURLAssetClass = [OCMockObject mockForClass:[AVURLAsset class]];
        [[[mockAVURLAssetClass stub] andReturn:@[avAssetTrack]] tracksWithMediaType:AVMediaTypeVideo];

        NSURL *url = [NSURL URLWithString:@"file://fakepath"];
        AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];

        // Above is not enough. Try stubbing the instance.
        NSArray *array = @[avAssetTrack];
        OCMStub([asset tracksWithMediaType:AVMediaTypeVideo]).andReturn(array);

        NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo];

        //OCMStub([avURLAsset tracksWithMediaType:AVMediaTypeVideo]).andReturn(@[avAssetTrack]);
        // This casuses EXC_BAD_ACCESS when using OCM Stub above? Why?
        //NSArray *tracks = [avURLAsset tracksWithMediaType:AVMediaTypeVideo];

        expect([tracks objectAtIndex:0]).to.equal(avAssetTrack);

返回的track数组为空,因此测试失败。

我做错了什么?我是OCMock的新手,但我一直在阅读文档,教程和SO帖子,但没有太多运气来解决这个问题。

0 个答案:

没有答案