gpt4 book ai didi

objective-c - 模拟一个在测试用例中调用其方法的类

转载 作者:搜寻专家 更新时间:2023-10-30 20:06:04 25 4
gpt4 key购买 nike

所以我有一个类,我为其编写了一些测试用例。这个类有这两个方法:

- (void)showNextNewsItem {
self.xmlUrl = self.nextNewsUrl;
[self loadWebViewContent];
}

- (void)showPreviousNewsItem {
self.xmlUrl = self.previousNewsUrl;
[self loadWebViewContent];
}

可以重构,这是非常原始的,但是我只想确保下一个加载下一个,上一个加载上一个。所以我使用 OCMock 为我的 SUT 类实例化一个 OCMockObject,如下所示:

- (void)testShowNextOrPreviousItemShouldReloadWebView {

id mockSut = [OCMockObject mockForClass:[NewsItemDetailsViewController class]];

[[[mockSut expect] andReturn:@"http://www.someurl.com"] nextNewsUrl];
[[mockSut expect] loadWebViewContent];

[[[mockSut expect] andReturn:@"http://www.someurl.com"] previousNewsUrl];
[[mockSut expect] loadWebViewContent];

[mockSut showNextNewsItem];
[mockSut showPreviousNewsItem];

[mockSut verify];
}

问题在于这两行实际上调用了一些方法来验证。 OCMock 现在告诉我,调用 showNextNewsItemshowPreviousNewsItem 不是预期的。当然,这不是预期的,因为我在测试中,我只希望生产代码本身会发生某些事情。

模拟概念的哪一部分我没有正确理解?

最佳答案

模拟被测类通常令人困惑,但如果你想这样做,你需要一个“部分模拟”,这样你就可以调用方法而不对它们进行 stub 并让它们执行正常的方法。

根据 docs,这似乎在 OCMock 中受支持.

关于objective-c - 模拟一个在测试用例中调用其方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14417167/

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