何时使用specta的’sharedExamplesFor’?

我是在没有rails / rspec背景的情况下进入并尝试在iOS上进行unit testing的’specta’框架。 我不明白的一件事是何时使用specta的’sharedExamplesFor’。

它只是在所有测试套件中共享的测试,您可以在每个测试之前运行,这是一组类似测试用例的一部分吗?

它用于指示跨多个类/组件的共同行为。 例如,您可能有几个控制器都是UITableView委托。 您可以创建一个共享示例,测试给定的UIViewController是否符合UITableViewDelegate协议,或者它是否响应给定的方法。 然后,您可以在两个UIViewControllers中使用该共享行为。

sharedExamplesFor(@"Table controller", ^(NSDictionary *data) { describe(@"Controller", ^{ it(@"is UITableViewDelegate", ^{ UIViewController *controller = data[@"controller"]; expect(controller).to.conformTo(@protocol(UITableViewDelegate)); }); }); }); describe(@"View controller 1", ^{ MyViewControllerOne *controllerOne = [[MyViewControllerOne alloc] init]; itBehavesLike(@"Table controller", @{@"controller" : controllerOne}); }); describe(@"View controller 2", ^{ MyViewControllerTwo *controllerTwo = [[MyViewControllerTwo alloc] init]; itBehavesLike(@"Table controller", @{@"controller" : controllerTwo}); }); 

这是一个非常简单的例子,可能不是你实际测试的东西,但希望能够显示出这个想法。