anchor.diff:    But instead of creating a stubbed service object, it injects the _real_ service (see the testing module `providers`) and 
     replaces the critical `getQuote` method with a Jasmine spy.
   
  -  本配置与[`welcome.component.spec` setup](#welcome-spec-setup)类似。
  +  本配置与[`welcome.component.spec`配置](#welcome-spec-setup)类似。
     但是与其伪造服务对象，它注入了真实的服务（参见测试模块的`providers`），并用Jasmine的`spy`替换关键的`getQuote`方法。
   
   +makeExample('testing/ts/app/shared/twain.component.spec.ts', 'spy')(format='.')
  
positive.code:   The `ComponentFixture.whenStable` method returns its own promise which resolves when the `getQuote` promise completes.
    In fact, the _whenStable_ promise resolves when _all pending asynchronous activities within this test_ complete ... the definition of "stable".
  
    `ComponentFixture.whenStable`方法返回它自己的承诺，它在`getQuote`承诺完成时被解析。实际上，当**所有待处理异步行为**完成时即为“stable”，在“stable”后**whenStable**承诺被解析。
  
    Then the test resumes and kicks off another round of change detection (`fixture.detectChanges`)
    which tells Angular to update the DOM with the quote.
  
negative.code:   
    Some functions called within a test (such as `fixture.whenStable`) continue to reveal their asynchronous behavior.  
    
    在测试程序（比如`fixture.whenStable`）里面调用函数时，还是体现它们的异步行为。
    
  .l-sub-section
    :marked
      The `fakeAsync` alternative, [covered below](#fake-async), removes this artifact and affords a more linear coding experience.
      
      `fakeAsync`可选方法，[正如下面解释的](#fake-async)，进一步移除了异步行为，提供了更加直观的代码经验。
  
  #when-stable
  :marked
  