:marked
  We write **unit tests** to explore and confirm the **behavior** of parts of our application.
  
  我们编写**单元测试**来探索和确认我们应用程序的**行为**部分。
  
  1. They **guard** against breaking existing code (“regressions”) when we make changes.
  
  1. 当我们改变代码时，它们**守护**已有代码，以防被破坏。
  1. They **clarify** what  the code does both when used as intended and when faced with deviant conditions.
  
  1. 在我们正确使用代码和面对异常情况时，它们**澄清**代码做什么。
  1. They **reveal** mistakes in design and implementation. Tests force us to look at our code from many angles. When a part of our application seems hard to test, 
  we may have discovered a design flaw, something we can cure now rather than later when it becomes expensive to fix.
  
  1.它们**揭露**我们设计的执行的错误。测试强迫我们从多个角度看代码。当应用程序的一个部分看起来很难测试，我们可能会发现设计缺陷，这是我们可以立刻修复的，而不是等到它变的很难修复的时候。

.alert.is-important
  :marked
    These testing chapters were written before the Angular 2 Beta release
    and are scheduled for significant updates.
    Much of the material remains accurate and relevant but references to
    specific features of Angular 2 and the Angular 2 testing library
    may not be correct. Please bear with us.
    
    这些测试的章节是
:marked
  Here is what we’ll learn in the unit testing chapters.

  1. Jasmine Testing 101
    - setup to run Jasmine tests in the browser
    - basic Jasmine testing skills
    - write simple Jasmine tests in TypeScript
    - debug a test in the browser
  1. The Application Under Test
  
  1. Test a class
    - test a simple application class outside of Angular
    - where to put the test file
    - load a test file with systemJS
  1. Test a Pipe
    - test a simple Angular Pipe class
    - add the Angular 2 library to the  test harness
    - load multiple test files using system.js
  1. Test an Asynchronous Service
    - test an asynchronous service class outside of Angular
    - write a test plan in code
    - fake a dependency
    - master the `catch(fail).then(done)` pattern
    - move setup to `beforeEach`
    - test when a dependency fails
    - control async test timeout
  1. The Angular Test Environment
    - the Angular test environment and why we need help
    - add the Angular Test libraries to the  test harness
    - test the same async service using Angular Dependency Injection
    - reduce friction with test helpers
    - introducing spies
  1. Test a Component
     - test the component outside of Angular
    - mock the dependent asynchronous service
    - simulate interaction with the view (no DOM)
    - use a spy-promise to control asynchronous test flow
  1. Test a Component in the DOM
    - test the component inside the Angular test environment
    - use the `TestComponentBuilder`
    - more test helpers
    - interact with the DOM
    - bind to a mock dependent asynchronous service
  1. Run the tests with karma

  It’s a big agenda. Fortunately, you can learn a little bit at a time and put each lesson to use.
