- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试熟悉 Kiwi BDD 测试框架。我将它与 Nocilla 结合使用模拟 HTTP 请求。这两个项目看起来都很棒,但我遇到了一些困难。我有以下测试规范:
beforeAll(^{ // Occurs once
[[LSNocilla sharedInstance] start];
});
afterAll(^{ // Occurs once
[[LSNocilla sharedInstance] stop];
});
beforeEach(^{ // Occurs before each enclosed "it"
couch = [[Couch alloc]initWithDatabaseUrl:@"http://myhost/mydatabase"];
});
afterEach(^{ // Occurs after each enclosed "it"
[[LSNocilla sharedInstance] clearStubs];
});
it(@"should be initialized", ^{
[couch shouldNotBeNil];
});
context(@"GET requests", ^{
it(@"should get document by id", ^{
__block NSData *successJson = nil;
__block NSError *requestErr = nil;
stubRequest(@"GET", @"http://myhost/mydatabase/test").
withHeader(@"Accept", @"application/json").
withBody(@"{\"_id\":\"test\",\"_rev\":\"2-77f66380e1670f1876f15ebd66f4e322\",\"name\":\"nick\"");
[couch getDocumentById:@"test" success:^(NSData *json){
successJson = json;
} failure:^(NSError *error) {
requestErr = error;
}];
[[successJson shouldNot]equal:nil];
});
});
抱歉,代码片段太长。我想确保我提供了上下文。如您所见,我正在测试发出 GET 请求并在“成功” block 中报告结果并在“失败” block 中报告错误的对象的行为。我有两个 __block 变量来接受地存储成功和失败。目前,测试检查“成功”变量是否有值(不是零)。这个测试通过。然而,调试这个测试似乎没有执行任何 block 。 successJson 出现为零。我希望 Nocilla 将 stub 主体内容传递给成功 block 参数。那么我的测试构造不正确吗?
谢谢!
最佳答案
测试的总体结构看起来不错。对于 asynchronous testing ,使用这个:
[[expectFutureValue(theValue(successJson != nil)) shouldEventually] beTrue];
上面 != nil
和 beTrue
的原因是没有 shouldEventually + notBeNil 这种组合可以用来测试最终的 nil 值。上面的测试会发现 successJson
最初是 nil,因此将继续轮询该值,直到您的回调使其成为非 nil。
请注意,如果您正在进行正面测试,例如检查 successJson == @"test",那么您可以使用更简单的形式来表示期望:
[[expectFutureValue(successJson) shouldEventually] equal:@"test"];
另请注意,您可以使用 shouldEventuallyBeforeTimingOutAfter(2.0)
将默认超时(我认为是 1 秒)增加到您想要的异步预期超时。
关于iOS Kiwi/Nocilla 测试不调用 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17385537/
是否可以让 kiwi-tcms 测试用例在远程服务器上启动可执行文件以执行测试用例,如果可以,该怎么做? 最佳答案 简短的回答 - 不! 长答案: 您正在寻找的是某种测试运行程序或 CI 系统 - 将
我正在寻找一种方法来测试嵌套对象的属性。本质上,我有一个规范将验证我们从外部服务返回的结果。由于我不想为要测试的每个示例对服务进行无数次调用,因此在规范的开头发出一次请求,然后我们使用一组期望来验证响
我在我的规范文件中的 BEGIN_SPEC END_SPEC block 中定义了一些辅助 block ,我经常重复使用这些 block 。例如。断言某个对话框出现: void (^expectOkA
我有一些重复的规范,我想干掉。通用功能不适合移动到 beforeEach block 中。本质上,它是对象创建,12 个对象中的每一个对象有 4 行,我想将这 4 行变成一个函数调用。 我可以在 Ki
问题描述: 我已按照此网站上介绍的分步进行操作:https://kiwitcms.readthedocs.io/en/latest/installing_docker.html 运行docker-co
有没有一种方法可以强制在Kiwi测试中失败,即等同于XCTFail()。 我可以写类似 [@"" should] beNil] 那将永远失败,但我认为Kiwi必须对开发人员融入框架的意图更具表达力。
我从 kivy 开始在教程中玩,我在 Pong 教程的最后,想根据分数添加“获胜者”标签。 为了做到这一点,我设计了一个获胜者标签: : Label: font_size: 2
我想使用 XML-RPC 将我的 iPhone 应用程序的测试结果发布到我的 TestLink。 我用 Kiwi在我的项目中,现在我想得到测试的结果。我可以知道我的测试用例上的条件是否通过或失败? 最
我浏览了各种类模拟示例,如下所示: https://groups.google.com/forum/#!topic/kiwi-bdd/hrR2Om3Hv3I https://gist.github.c
我一直在寻找使用 PyGTK 的适用于 Python 的良好 MVC 框架。我看过 Kiwi但发现它有点欠缺,尤其是在使用 Gazpacho Glade 替代品时。 还有其他不错的桌面 Python
我正在努力找出在后台线程中测试与 Core Data 交互的最佳方法。我有以下类方法: + (void)fetchSomeJSON { // Download some json then p
这link演示如何使用 Kiwi 捕获模拟对象的参数。 有没有办法捕获静态方法调用的参数?在我看来,这只适用于实例方法。 最佳答案 考虑到相同的 message dispatching mechani
我需要以下方面的帮助:我正在为具有以下结构的客户端 API 编写一些 BDD 测试: @protocol MyAPIClientDelegate -(void)myCallbackMethod:
我有一个包含 3 个项目的工作区: 我的应用 常见 pod Common是MyApp依赖的一个公共(public)库。我想设置 CocoaPods 和 Kiwi 以在这个项目中正常工作。我该怎么做?
我非常偏爱高度可预测的 Arrange Act Assert format用于单元测试。 因为 Kiwi 没有针对模拟的显式验证语句,所以它强制采用不同的模式,例如: // Arrange Thing
出于某种原因,我的测试每次都通过了。即使我添加 fail(@"failed"); Xcode 仍然显示“测试成功” 有什么想法吗? 这是我的规范的样子 #import "SDRViewControll
我正在尝试 JASidePanels使用 Kiwi,并出现以下错误: failed: 'Root side panel controller, wants to show left panel, sh
我正在研究用于测试的 kiwi 框架 myStack.m - (id) init { if (self = [super init]) { _data = [[NSMutabl
我对这段代码有疑问,它在 Kiwiirc 中除了 Firefox 之外的所有地方都运行良好。 当我点击粗体、斜体或下划线时,它只是关闭弹出框,并没有设置它们中的任何一个。它不会在任何其他浏览器中执行此
我有一个应用程序,为此我使用 Objective Resource 创建本地对象以反射(reflect)远程响应。 特定的模型类有一个抽象类的子类,为它们提供各种附加功能,最重要的是序列化、写入磁盘和
我是一名优秀的程序员,十分优秀!