Как тестируют в Google. Джефф Каролло
Чтение книги онлайн.

Читать онлайн книгу Как тестируют в Google - Джефф Каролло страница 28

Название: Как тестируют в Google

Автор: Джефф Каролло

Издательство: ""Издательство ""Питер""

Жанр: Интернет

Серия:

isbn: 978-5-496-00893-8

isbn:

СКАЧАТЬ error_details_ = error_details;

      }

      // Overrides of the AddUrlService::AddUrl method generated from

      // service definition in addurl.proto by the Protocol Buffer

      // compiler.

      virtual void AddUrl(RPC* rpc,

       const AddUrlRequest* request,

       AddUrlReply* reply) {

       // Enforce expectations on request (if present).

       if (has_request_expectations_) {

       EXPECT_EQ(expected_url_, request->url());

       EXPECT_EQ(expected_comment_, request->comment());

       }

       // Inject errors specified in the set_* methods above if present.

       if (error_code_ != 0 || !error_details_.empty()) {

       reply->set_error_code(error_code_);

       reply->set_error_details(error_details_);

       }

      }

      private:

       // Expected request information.

       // 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<FakeAddUrlService> fake_add_url_service_;

       scoped_ptr<AddUrlFrontend> 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");

       // 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");

       // 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");

       // СКАЧАТЬ