Читаем Как тестируют в Google полностью

   //  Clients  set  using  set_expected_*  methods.

   string  expected_url_;

   string  expected_comment_;

   bool  has_request_expectations_;

   //  Injected  error  information.

   //  Clients  set  using  set_*  methods  above.

   int  error_code_;

   string  error_details_;

};

//  The  test  fixture  for  AddUrlFrontend.  It  is  code  shared  by  the

//  TEST_F  test  definitions  below.  For  every  test  using  this

//  fixture,  the  fixture  will  create  a  FakeAddUrlService,  an

//  AddUrlFrontend,  and  inject  the  FakeAddUrlService  into  that

//  AddUrlFrontend.  Tests  will  have  access  to  both  of  these

//  objects  at  runtime.

 class  AddurlFrontendTest  :  public  ::testing::Test  {

 //  Runs  before  every  test  method  is  executed.

   virtual  void  SetUp  {

       //  Create  a  FakeAddUrlService  for  injection.

       fake_add_url_service_.reset(new  FakeAddUrlService);

       //  Create  an  AddUrlFrontend  and  inject  our  FakeAddUrlService

       //  into  it.

       add_url_frontend_.reset(

               new  AddUrlFrontend(fake_add_url_service_.get));

}

   scoped_ptr  fake_add_url_service_;

   scoped_ptr  add_url_frontend_;

};

//  Test  that  AddurlFrontendTest::SetUp  works.

TEST_F(AddurlFrontendTest,  FixtureTest)  {

   //  AddurlFrontendTest::SetUp  was  invoked  by  this  point.

}

//  Test  that  AddUrlFrontend  parses  URLs  correctly  from  its

//  query  parameters.

TEST_F(AddurlFrontendTest,  ParsesUrlCorrectly)  {

   HTTPRequest  http_request;

   HTTPReply  http_reply;

   //  Configure  the  request  to  go  to  the  /addurl  resource  and

   //  to  contain  a  'url'  query  parameter.

   http_request.set_text(

           "GET  /addurl?url=http://www.foo.com  HTTP/1.1\r\n\r\n");

   //  Tell  the  FakeAddUrlService  to  expect  to  receive  a  URL

   //  of  'http://www.foo.com'.

   fake_add_url_service_->set_expected_url("http://www.foo.com");

   //  Send  the  request  to  AddUrlFrontend,  which  should  dispatch

   //  a  request  to  the  FakeAddUrlService.

   add_url_frontend_->HandleAddUrlFrontendRequest(

           &http_request,  &http_reply);

   //  Validate  the  response.

   EXPECT_STREQ("200  OK",  http_reply.text);

}

//  Test  that  AddUrlFrontend  parses  comments  correctly  from  its

//  query  parameters.

TEST_F(AddurlFrontendTest,  ParsesCommentCorrectly)  {

   HTTPRequest  http_request;

   HTTPReply  http_reply;

   //  Configure  the  request  to  go  to  the  /addurl  resource  and

   //  to  contain  a  'url'  query  parameter  and  to  also  contain

 //  a  'comment'  query  parameter  that  contains  the

   //  url-encoded  query  string  'Test  comment'.

   http_request.set_text("GET  /addurl?url=http://www.foo.com"

                                               "&comment=Test+comment  HTTP/1.1\r\n\r\n");

   //  Tell  the  FakeAddUrlService  to  expect  to  receive  a  URL

   //  of  'http://www.foo.com'  again.

   fake_add_url_service_->set_expected_url("http://www.foo.com");

   //  Tell  the  FakeAddUrlService  to  also  expect  to  receive  a

   //  comment  of  'Test  comment'  this  time.

   fake_add_url_service_->set_expected_comment("Test  comment");

Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT