I have no idea what is going on as I am fairly new to objective c and IOS dev.
When i try to run my tests, using the default testing framework i get the following error:
..../Pods/Expecta/src/matchers/EXPMatchers+beCloseTo.m:4:1:
Class 'EXPFixCategoriesBugEXPMatcher_beCloseToWithinMatcher'
defined without specifying a base class
The following peice of code generates the issue (however it is not mine, I believe it is a peice from one of the libraries I am using through pods):
#import "EXPMatchers+beCloseTo.h"
#import "EXPMatcherHelpers.h"
EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) {
prerequisite(^BOOL{
return [actual isKindOfClass:[NSNumber class]] &&
[expected isKindOfClass:[NSNumber class]] &&
([within isKindOfClass:[NSNumber class]] || (within == nil));
});
match(^BOOL{
double actualValue = [actual doubleValue];
double expectedValue = [expected doubleValue];
if (within != nil) {
double withinValue = [within doubleValue];
double lowerBound = expectedValue - withinValue;
double upperBound = expectedValue + withinValue;
return (actualValue >= lowerBound) && (actualValue <= upperBound);
} else {
double diff = fabs(actualValue - expectedValue);
actualValue = fabs(actualValue);
expectedValue = fabs(expectedValue);
double largest = (expectedValue > actualValue) ? expectedValue : actualValue;
return (diff <= largest * FLT_EPSILON);
}
});
failureMessageForTo(^NSString *{
if (within) {
return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@",
EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)];
} else {
return [NSString stringWithFormat:@"expected %@ to be close to %@",
EXPDescribeObject(actual), EXPDescribeObject(expected)];
}
});
failureMessageForNotTo(^NSString *{
if (within) {
return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@",
EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)];
} else {
return [NSString stringWithFormat:@"expected %@ not to be close to %@",
EXPDescribeObject(actual), EXPDescribeObject(expected)];
}
});
}
EXPMatcherImplementationEnd
My POD files looks as follows:
platform :ios, 6.0
pod 'RestKit', '~> 0.20.0rc'
# Include optional Testing and Search components
pod 'RestKit/Testing', '~> 0.20.0rc'
pod 'RestKit/Search', '~> 0.20.0rc'
target :MTPROJTESTS do
pod 'Expecta', '~> 0.2.3' # expecta matchers
# pod 'Specta', '~> 0.1.11' # specta bdd framework
end
NEW ERROR after updating cocoa pods and EXPECTA: ld: library not found for -lPods-test
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error:
Ld /Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Products/Debug-iphonesimulator/MYIOSPROJProjectTests.xctest/MYIOSPROJProjectTests normal i386
cd /Users/AUSER/Documents/Dev/MYIOSPROJProject/MYIOSPROJProject
setenv IPHONEOS_DEPLOYMENT_TARGET 7.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch i386 -bundle -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk -L/Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Products/Debug-iphonesimulator -F/Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Products/Debug-iphonesimulator -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.0.sdk/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -F/Applications/Xcode.app/Contents/Developer/Library/Frameworks -filelist /Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Intermediates/MYIOSPROJProject.build/Debug-iphonesimulator/MYIOSPROJProjectTests.build/Objects-normal/i386/MYIOSPROJProjectTests.LinkFileList -bundle_loader /Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Products/Debug-iphonesimulator/MYIOSPROJProject.app/MYIOSPROJProject -Xlinker -objc_abi_version -Xlinker 2 -ObjC -framework CFNetwork -framework CoreData -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework Security -framework SystemConfiguration -fobjc-arc -fobjc-link-runtime -Xlinker -no_implicit_dylibs -mios-simulator-version-min=7.0 -framework XCTest -framework UIKit -framework Foundation -lPods-test -lPods-MYIOSPROJProjectTests -Xlinker -dependency_info -Xlinker /Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Intermediates/MYIOSPROJProject.build/Debug-iphonesimulator/MYIOSPROJProjectTests.build/Objects-normal/i386/MYIOSPROJProjectTests_dependency_info.dat -o /Users/AUSER/Library/Developer/Xcode/DerivedData/MYIOSPROJProject-cmxbzcbzjfbvgncspsalqnjvlova/Build/Products/Debug-iphonesimulator/MYIOSPROJProjectTests.xctest/MYIOSPROJProjectTests
I hope someone out there has a clue :)
Regarding the new linker error: Xcode likes to add a new build target for testing, so make sure all the appropriate files (e.g., your .m source files, your static libraries, your frameworks) are set to be included in the test build target. You can do this by selecting the file in the Project Navigator and looking at the "Target Membership" section in the File Inspector pane; make sure the box is checked for the test build target. Also, in your project settings you can select the test build target and go to Build Phases and look at "Link Binary With Libraries" to ensure the appropriate libraries are linked.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With