سؤال

أحاول كتابة اختبار لطريقة يعتمد فيها الإخراج على قيمة إرجاع TimeIntervalsincenow NSDate. أرغب في تحديد قيمة الإرجاع في اختباراتي حتى أتمكن من اختبار سيناريوهات معينة.

أواجه صعوبة حقًا في إرجاع كائن Ocmock هذا ما أحب. هذا هو الكود الخاص بي:

id mock = [OCMockObject mockForClass:[NSDate class]];
NSTimeInterval t = 20.0;
[[[mock stub] andReturnValue:OCMOCK_VALUE(t)] timeIntervalSinceNow];
STAssertEquals([mock timeIntervalSinceNow], 20.0, @"Should be eql.");

هذا يولد "خطأ: محدد المتوقع-قائمة Qualifier قبل" typeof ".

أي أفكار؟ أنا جديد على OBJC ، لذلك يتم تقدير أي نصائح أخرى ذات صلة.

شكرًا.

هل كانت مفيدة؟

المحلول

في الواقع ، إنه خطأ في برنامج التحويل البرمجي ، وليس خطأ OCMock. هذا له علاقة بالطريقة OCMOCK_VALUE(t) أعمال ماكرو. يتم تعريفه على النحو التالي:

#define OCMOCK_VALUE(variable) [NSValue value:&variable withObjCType:@encode(typeof(variable))]

توجيه typeof () ليس جزءًا من C89 ، لذا تأكد من تعيين المترجم الخاص بك على استخدام -std=gnu89 أو std=gnu99 علَم. وفقًا لمستندات Apple ، إذا قمت بتعيينها على Compiler Default هذا يعادل GNU89 ، وهو أمر جيد أيضًا.

ربما هذا هو سبب خطأك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top