一个基于 'should' 术语的 Objective-C 预期框架。
所有参数和返回类型都必须以对象的形式提供。通过引入最常见数据类型字面量的引入,这已经变得容易得多。
这个库仍在开发中,所以 API 可能会简化,甚至可能发生重大变化。
Posit 提供了以下格式的匹配器 [[subject should] ...],以使示例更易读。默认提供的匹配器如下
// Existence:
[[object should] beNil];
// Equality:
[[@(1+2) should] beEqualTo:@3];
[[object should] beIdenticalTo:anotherObject];
// Booleans:
[[@true should] beTrue];
[[@false should] beFalse];
[[@YES should] beYes];
[[@NO should] beNo];
// Numbers:
[[@0 should] beZero];
[[@1 should] bePositive];
[[@(-1) should] beNegative];
[[@6 should] beGreaterThan:@5];
[[@5 should] beLessThan:@6];
[[@6 should] beGreaterThanOrEqualTo:@5];
[[@5 should] beLessThanOrEqualTo:@6];
[[@5 should] beBetween:@1 and:@10];
// Objects:
[[object should] beKindOfClass:[NSObject class]];
[[object should] beMemberOfClass:[NSObject class]];
[[object should] conformToProtocol:@protocol(NSCoding)];
[[object should] respondToSelector:@selector(description)];
// Collections:
[[pets should] beEmpty];
[[pets should] haveObject:cat];
[[pets should] haveObjects:@[cat, dog]];
要否定一个匹配器,以下任一都有效
[[@(1+1) shouldNot] beEqualTo:@3];
[[[@(1+1) should] not] beEqualTo:@3];
使用任何您喜欢的。
以上列出的某些匹配器基于 Posit 的动态行为——如果没有与提供的选择器匹配的匹配器,库将尝试根据惯例实现您 intend 的行为。如果提供的匹配器以 'be' 开始,'be' 将被 'is' 替换,并尝试在主题上调用具有生成选择器的相应方法。例如,'beEqualTo:' 没有匹配器——相反,Posit 在主题上调用 'beEqualTo:',提供期望的行为。
然而,在调用自定义方法之前,编译器必须知道其存在。这是通过以下方式实现的
PSTAddMatcher(beSwitchedOn);
PSTAddMatcher(beValidWhenComparedTo:(id)object);
本项目可在 MIT 许可证下使用。有关详细信息,请参阅 LICENSE 文件。