I have a Kiwi spec file that looks something like this:
#import "Kiwi.h"
#import "MyCollection.h"
SPEC_BEGIN(CollectionSpec)
describe(@"Collection starting with no objects", ^{
MyCollection *collection = [MyCollection new];
context(@"then adding 1 object", ^{
MyObject *object = [MyObject new];
[collection addObject:object];
it(@"has 1 object", ^{
[collection shouldNotBeNil];
[collection.objects shouldNotBeNil];
[[theValue(collection.objects.count) should] equal:theValue(1)]; //failing test
});
context(@"then removing 1 object", ^{
[collection removeObject:object];
it(@"has 0 objects", ^{
[[theValue(collection.objects.count) should] equal:theValue(0)]; //passing test
});
});
});
});
SPEC_END
Running the spec results in one failure at this line of code [[theValue(collection.objects.count) should] equal:theValue(1)];
Here's the strange part - if I remove the whole context(@"then removing 1 object", ^{...})
block from the spec the aforementioned test passes.
This leads me to believe that the [collection removeObject:object]
line is getting executed before the failing test. I have a feeling I may be misunderstanding the order that blocks are executed in.
Any suggestions would be appreciated!