<record xmlns="http://www.loc.gov/MARC21/slim" xmlns:zs="http://www.loc.gov/zing/srw/">
  <leader>08427nam a2200721 i 4500</leader>
  <controlfield tag="001">almatuudk_9923195625902884</controlfield>
  <controlfield tag="003">DE-602</controlfield>
  <controlfield tag="005">20180403104010.0</controlfield>
  <controlfield tag="006">m     o  d |      </controlfield>
  <controlfield tag="007">cr cnu||||||||</controlfield>
  <controlfield tag="008">180406t20182018ncua    ob    001 0 eng d</controlfield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9781680505573</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">1680505572</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9781680505566</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">1680505564</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9781680505580</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">1680505580</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">9781680502503</subfield>
  </datafield>
  <datafield tag="020" ind1=" " ind2=" ">
    <subfield code="a">1680502506</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(CKB)4100000002964427</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(MiAaPQ)EBC5322544</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(CaSebORM)9781680505566</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(OCoLC)1030304591</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(OCoLC)on1030304591</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(MiAaPQ)EBC31929206</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(Au-PeEL)EBL31929206</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(OCoLC)1505732959</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(Perlego)4454233</subfield>
  </datafield>
  <datafield tag="035" ind1=" " ind2=" ">
    <subfield code="a">(EXLCZ)994100000002964427</subfield>
  </datafield>
  <datafield tag="040" ind1=" " ind2=" ">
    <subfield code="a">MiAaPQ</subfield>
    <subfield code="b">eng</subfield>
    <subfield code="e">rda</subfield>
    <subfield code="e">pn</subfield>
    <subfield code="c">MiAaPQ</subfield>
    <subfield code="d">MiAaPQ</subfield>
  </datafield>
  <datafield tag="041" ind1="0" ind2=" ">
    <subfield code="a">eng</subfield>
  </datafield>
  <datafield tag="049" ind1=" " ind2=" ">
    <subfield code="a">DE-83;9923195625902884</subfield>
  </datafield>
  <datafield tag="050" ind1=" " ind2="4">
    <subfield code="a">TK5105.8885.R83</subfield>
    <subfield code="b">.N684 2018</subfield>
  </datafield>
  <datafield tag="082" ind1="0" ind2=" ">
    <subfield code="a">005.117</subfield>
    <subfield code="2">23</subfield>
  </datafield>
  <datafield tag="082" ind1=" " ind2=" ">
    <subfield code="a">005.133</subfield>
  </datafield>
  <datafield tag="091" ind1=" " ind2=" ">
    <subfield code="a">DE-83;9923195625902884</subfield>
  </datafield>
  <datafield tag="092" ind1=" " ind2=" ">
    <subfield code="a">almatuudk_9923195625902884</subfield>
  </datafield>
  <datafield tag="100" ind1="1" ind2=" ">
    <subfield code="a">Rappin, Noel,</subfield>
    <subfield code="e">author.</subfield>
  </datafield>
  <datafield tag="245" ind1="1" ind2="0">
    <subfield code="a">Rails 5 test prescriptions :</subfield>
    <subfield code="b">build a healthy codebase /</subfield>
    <subfield code="c">Noel Rappin ; edited by Katharine Dvorak.</subfield>
  </datafield>
  <datafield tag="250" ind1=" " ind2=" ">
    <subfield code="a">Version: P1.0 (February 2018).</subfield>
  </datafield>
  <datafield tag="264" ind1=" " ind2="1">
    <subfield code="a">Raleigh, North Carolina :</subfield>
    <subfield code="b">The Pragmatic Bookshelf,</subfield>
    <subfield code="c">2018.</subfield>
  </datafield>
  <datafield tag="264" ind1=" " ind2="4">
    <subfield code="c">&#169;2018</subfield>
  </datafield>
  <datafield tag="300" ind1=" " ind2=" ">
    <subfield code="a">1 online resource (388 pages) :</subfield>
    <subfield code="b">illustrations.</subfield>
  </datafield>
  <datafield tag="336" ind1=" " ind2=" ">
    <subfield code="a">text</subfield>
    <subfield code="2">rdacontent</subfield>
  </datafield>
  <datafield tag="337" ind1=" " ind2=" ">
    <subfield code="a">computer</subfield>
    <subfield code="2">rdamedia</subfield>
  </datafield>
  <datafield tag="338" ind1=" " ind2=" ">
    <subfield code="a">online resource</subfield>
    <subfield code="2">rdacarrier</subfield>
  </datafield>
  <datafield tag="347" ind1=" " ind2=" ">
    <subfield code="a">text file</subfield>
  </datafield>
  <datafield tag="490" ind1="1" ind2=" ">
    <subfield code="a">Pragmatic Programmers</subfield>
  </datafield>
  <datafield tag="504" ind1=" " ind2=" ">
    <subfield code="a">Includes bibliographical references and index.</subfield>
  </datafield>
  <datafield tag="588" ind1=" " ind2=" ">
    <subfield code="a">Description based on online resource; title from PDF title page (EBC, viewed April 6, 2018).</subfield>
  </datafield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">Does your Rails code suffer from bloat, brittleness, or inaccuracy? Cure these problems with the regular application of test-driven development. You'll use Rails 5.1, Minitest 5, and RSpec 3.6, as well as popular testing libraries such as factory_girl and Cucumber. Updates include Rails 5.1 system tests and Webpack integration. Do what the doctor ordered to make your applications feel all better. Side effects may include better code, fewer bugs, and happier developers. Your Ruby on Rails application is sick. Deadlines are looming, but every time you make the slightest change to the code, something else breaks. Nobody remembers what that tricky piece of code was supposed to do, and nobody can tell what it actually does. Plus, it has bugs. You need test-driven development: a process for improving the design, maintainability, and long-term viability of software. With both practical code examples and discussion of why testing works, this book starts with the most basic features delivered as part of core Ruby on Rails. Once you've integrated those features into your coding practice, work with popular third-party testing tools such as RSpec, Jasmine, Cucumber, and factory_girl. Test the component parts of a Rails application, including the back-end model logic and the front-end display logic. With Rails examples, use testing to enable your code to respond better to future change. Plus, see how to handle real-world testing situations. This new edition has been updated to Rails 5.1 and RSpec 3.6 and contains full coverage of new Rails features, including system tests and the Webpack-based JavaScript setup. What You Need: Ruby 2.4, Rails 5.1</subfield>
  </datafield>
  <datafield tag="505" ind1="0" ind2=" ">
    <subfield code="a">Cover -- Table of Contents -- Acknowledgments -- Preface -- Who You Are -- What's in This Book -- What You'll Need -- A Word About Tools, Best Practices, and Teaching TDD -- Changes in This Edition -- Online Resources -- 1. A Test-Driven Fable -- Testing First Drives Design -- What Is TDD Good For? -- When TDD Needs Some Help -- What You've Done -- 2. Test-Driven Development Basics -- Infrastructure -- The Requirements -- Installing RSpec -- Where to Start? -- Running the Test -- Making the Test Pass -- The Second Test -- Back on Task -- Adding Some Math -- The First Date -- Using the Time Data -- What You've Done -- 3. Test-Driven Rails -- Let's Write Some Rails -- The Days Are Action-Packed -- Who Controls the Controller? -- A Test with a View -- Testing for Failure -- What You've Done -- 4. What Makes Great Tests -- The Big One -- Cost and Value -- SWIFT: The Five Qualities of Valuable Tests -- What You've Done -- 5. Testing Models -- What Can You Do in a Model Test? -- What Should You Test in a Model Test? -- Okay, Funny Man, What Makes a Good Set of Model Tests? -- Refactoring Models -- A Note on Assertions per Test -- Testing What Rails Gives You -- Testing ActiveRecord Finders -- Testing Shared Modules and ActiveSupport Concerns -- Writing Your Own RSpec Matchers -- What You've Done -- 6. Adding Data to Tests -- What's the Problem? -- Fixtures -- Factories -- Dates and Times -- What You've Done -- 7. Using Test Doubles as Mocks and Stubs -- Test Doubles Defined -- Creating Stubs -- Mock Expectations -- Using Mocks to Simulate Database Failure -- Using Mocks to Specify Behavior -- More Expectation Annotations -- Mock Tips -- What You've Done -- 8. Integration Testing with Capybara and Cucumber -- A Field Guide to Integration and System Tests -- Setting Up Capybara -- Using Feature Tests to Build a Feature.</subfield>
  </datafield>
  <datafield tag="505" ind1="8" ind2=" ">
    <subfield code="a">What to Test in an RSpec System Test -- Outside-in Testing -- Making the Capybara Test Pass -- Retrospective -- Setting Up Cucumber -- Writing Cucumber Features -- Writing Cucumber Steps -- Advanced Cucumber -- Is Cucumber Worth It? -- What You've Done -- 9. Testing JavaScript: Integration Testing -- Integration-Testing JavaScript with Capybara -- Let's Talk About Drivers -- Making the Test Pass -- Webpack in Developer Mode -- What You've Done -- 10. Unit-Testing JavaScript -- Setting Up JavaScript Unit Tests -- Writing a Sample Test -- TDD in JavaScript -- Jasmine Matchers -- Testing Ajax Calls -- Using testdouble.js -- Connecting the JavaScript to the Server Code -- What You've Done -- 11. Testing Rails Display Elements -- Testing Routes -- Testing Helper Methods -- Testing Controllers and Requests -- Simulating Requests -- What to Expect in a Request Spec -- Older Rails Controller Tests -- Testing Mailers -- Testing Views and View Markup -- Using Presenters -- Testing Jobs and Cables -- What You've Done -- 12. Minitest -- Getting Started with Minitest -- Minitest Basics -- Running Minitest -- Minitest Setup -- Mocha -- System Tests and Others -- Minitest Helper Tests -- Minitest and Routing -- What You've Done -- 13. Testing for Security -- User Authentication and Authorization -- Adding Users and Roles -- Restricting Access -- More Access-Control Testing -- Using Roles -- Protection Against Form Modification -- Mass Assignment Testing -- Other Security Resources -- What You've Done -- 14. Testing External Services -- External Testing Strategy -- The Service Integration Test -- Introducing VCR -- Client Unit Tests -- Why an Adapter? -- Adapter Tests -- Testing for Error Cases -- Smoke Tests and VCR Options -- The World Is a Service -- What You've Done -- 15. Troubleshooting and Debugging -- General Principles -- The Humble Print Statement.</subfield>
  </datafield>
  <datafield tag="505" ind1="8" ind2=" ">
    <subfield code="a">Git Bisect -- RSpec or Minitest Bisect -- Pry -- Common Rails Gotchas -- What You've Done -- 16. Running Tests Faster and Running Faster Tests -- Running Smaller Groups of Tests -- Running Rails in the Background -- Running Tests Automatically with Guard -- Writing Faster Tests by Bypassing Rails -- Recommendations for Faster Tests -- What You've Done -- 17. Testing Legacy Code -- What's a Legacy? -- Set Expectations -- Getting Started with Legacy Code -- Test-Driven Exploration -- Dependency Removal -- Find the Seam -- Don't Look Back -- What You've Done -- Bibliography -- Index -- - SYMBOLS - -- - A - -- - B - -- - C - -- - D - -- - E - -- - F - -- - G - -- - H - -- - I - -- - J - -- - K - -- - L - -- - M - -- - N - -- - O - -- - P - -- - Q - -- - R - -- - S - -- - T - -- - U - -- - V - -- - W - -- - X - -- - Y -.</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="0">
    <subfield code="a">Ruby on rails (Electronic resource)</subfield>
  </datafield>
  <datafield tag="650" ind1=" " ind2="0">
    <subfield code="a">Web site development.</subfield>
  </datafield>
  <datafield tag="630" ind1="0" ind2="0">
    <subfield code="a">Ruby on rails (Electronic resource)</subfield>
  </datafield>
  <datafield tag="700" ind1="1" ind2=" ">
    <subfield code="a">Dvorak, Katharine,</subfield>
    <subfield code="e">editor.</subfield>
  </datafield>
  <datafield tag="830" ind1=" " ind2="0">
    <subfield code="a">Pragmatic programmers.</subfield>
  </datafield>
  <datafield tag="906" ind1=" " ind2=" ">
    <subfield code="a">BOOK</subfield>
  </datafield>
  <datafield tag="338" ind1=" " ind2=" ">
    <subfield code="b">cr</subfield>
  </datafield>
  <datafield tag="924" ind1=" " ind2=" ">
    <subfield code="a">9923195625902884</subfield>
    <subfield code="b">DE-83</subfield>
    <subfield code="c">KOBV</subfield>
    <subfield code="d">c</subfield>
  </datafield>
  <datafield tag="950" ind1=" " ind2=" ">
    <subfield code="s">false</subfield>
  </datafield>
</record>