Вызов функции через указатель функции
float add(int , float),result;
int main()
{
float (*fp)(int,float);
float result;
fp=add;
result=add(5,10.9); // Normal calling
printf("%f\n\n",result);
result=(*fp)(5,10.9); //calling via function Pointer
printf("%f\n\n",result);
result=(fp)(5,10.9); //calling via function Pointer,Indirection Operator can Be
omitted
printf("%f",result);
getch();
}
float add(int a,float b)
{
return a+b;
}
Выход
15.90000
15.90000
15.90000
Мое "решение" аналогичной проблемы заключалось в том, чтобы извлечь всю логику из моих файлов .rake и создать классы для выполнения задач, оставив только однострочный вызов в файле rake, который Я был уверен, что не буду слишком усердно тестировать. После этого классы можно было бы протестировать почти нормально.
Я не знаю, насколько хорошо это выдержит сложный набор взаимозависимых задач, которые поддерживают какое-то далеко идущее состояние: вероятно, не очень хорошо, но опять же, это, скорее всего, быть признаком какой-то другой проблемы дизайна ...
Мне любопытно посмотреть, не пропустил ли я что-нибудь получше.
РЕДАКТИРОВАТЬ: Раньше здесь было сообщение в блоге , которое (a ) говорит то же самое и (б) говорит лучше. Похоже, он тоже это сказал первым.
при запуске тестов среда, которая загружается, является тестовой.
поэтому вы взаимодействуете с тестом только база данных.
Так что я не вижу причин переопределять вашу задачу rake в test_helper.rb
Думаю, вы ищете эту строку: require (File.join (RAILS_ROOT, 'config', 'environment')) это именно то, что вы найдете в "task: environment" реализация
Я использую его для тестирования моих задач с граблями с помощью rspec