translate: testing line 1500

This commit is contained in:
rexebin 2016-09-24 12:42:05 +01:00
parent a59b1b60ee
commit 3b73d04169
1 changed files with 37 additions and 0 deletions

View File

@ -1411,52 +1411,89 @@ a(href="#top").to-top 回到顶部
The `fakeAsync` function enables a linear coding style by running the test body in a special _fakeAsync test zone_. The `fakeAsync` function enables a linear coding style by running the test body in a special _fakeAsync test zone_.
`fakeAsync`函数通过在一个特殊的**fakeAsync测试区域**运行测试,让测试代码更加简单直观。
The principle advantage of `fakeAsync` over `async` is that the test appears to be synchronous. The principle advantage of `fakeAsync` over `async` is that the test appears to be synchronous.
There are no promises at all. There are no promises at all.
No `then(...)` chains to disrupt the visible flow of control. No `then(...)` chains to disrupt the visible flow of control.
对于`async`来说,`fakeAsync`最重要的好处时测试看起来像同步的。里面没有任何承诺。
没有`then(...)`链来打断控制流。
There are limitations. For example, you cannot make an XHR call from within a `fakeAsync`. There are limitations. For example, you cannot make an XHR call from within a `fakeAsync`.
但是`fakeAsync`有局限性。比如,你不能从`fakeAsync`发起一个XHR请求。
#tick #tick
#tick-first-look #tick-first-look
:marked :marked
## The _tick_ function ## The _tick_ function
## **tick**函数
Compare the third and fourth tests. Notice that `fixture.whenStable` is gone, replaced by `tick()`. Compare the third and fourth tests. Notice that `fixture.whenStable` is gone, replaced by `tick()`.
比较一下第三和第四个测试。注意`fixture.whenStable`没有了,被`tick()`替换。
The `tick` function is one of the Angular testing utilities and a companion to `fakeAsync`. The `tick` function is one of the Angular testing utilities and a companion to `fakeAsync`.
It can only be called within a `fakeAsync` body. It can only be called within a `fakeAsync` body.
`tick`函数是Angular测试工具之一是`fakeAsync`的同伴。
它只能在`fakeAsync`的主体中被调用。
Calling `tick()` simulates the passage of time until all pending asynchronous activities complete, Calling `tick()` simulates the passage of time until all pending asynchronous activities complete,
including the resolution of the `getQuote` promise in this test case. including the resolution of the `getQuote` promise in this test case.
调用`tick()`模拟时间的推移,直到全部待处理的异步任务都已完成,在这个测试案例中,包含`getQuote`承诺的解析。
It returns nothing. There is no promise to wait for. It returns nothing. There is no promise to wait for.
Proceed with the same test code as formerly appeared within the `whenStable.then()` callback. Proceed with the same test code as formerly appeared within the `whenStable.then()` callback.
它不返回任何结果。没有任何承诺需要等待。
直接执行与之前在`whenStable.then()`的回调函数里相同的代码。
Even this simple example is easier to read than the third test. Even this simple example is easier to read than the third test.
To more fully appreciate the improvement, imagine a succession of asynchronous operations, To more fully appreciate the improvement, imagine a succession of asynchronous operations,
chained in a long sequence of promise callbacks. chained in a long sequence of promise callbacks.
虽然这个例子非常简单,但是它已经比第三个测试更易阅读。
为了更充分的体会`fakeAsync`的好处,试想一下一连串的异步操作,被一长串的承诺回调链在一起。
#jasmine-done #jasmine-done
:marked :marked
## _jasmine.done_ ## _jasmine.done_
## _jasmine.done_
While `fakeAsync` and even `async` function greatly simplify Angular asynchronous testing, While `fakeAsync` and even `async` function greatly simplify Angular asynchronous testing,
you can still fallback to the traditional Jasmine asynchronous testing technique. you can still fallback to the traditional Jasmine asynchronous testing technique.
虽然`fakeAsync`,甚至`async`函数大大的简化了异步测试你仍然可以回退到传统的Jasmine异步测试技术上。
You can still pass `it` a function that takes a You can still pass `it` a function that takes a
[`done` callback](http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support). [`done` callback](http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support).
Now you are responsible for chaining promises, handling errors, and calling `done` at the appropriate moment. Now you are responsible for chaining promises, handling errors, and calling `done` at the appropriate moment.
你仍然可以将一个接受 [`done`回调](http://jasmine.github.io/2.0/introduction.html#section-Asynchronous_Support)的函数传给`it`。
但是,你必须链接承诺、处理错误,并在适当的时候调用`done`。
Here is a `done` version of the previous two tests: Here is a `done` version of the previous two tests:
下面是上面两个测试的`done`版本:
+makeExample('testing/ts/app/shared/twain.component.spec.ts', 'done-test', 'app/shared/twain.component.spec.ts (done test)')(format='.') +makeExample('testing/ts/app/shared/twain.component.spec.ts', 'done-test', 'app/shared/twain.component.spec.ts (done test)')(format='.')
:marked :marked
Although we have no direct access to the `getQuote` promise inside `TwainComponent`, Although we have no direct access to the `getQuote` promise inside `TwainComponent`,
the spy does and that makes it possible to wait for `getQuote` to finish. the spy does and that makes it possible to wait for `getQuote` to finish.
虽然我们对`TwainComponent`里的`getQuote`承诺没有直接访问但是Spy有所以才可能等待`getQuote`完成。
The `jasmine.done` technique, while discouraged, may become necessary when neither `async` nor `fakeAsync` The `jasmine.done` technique, while discouraged, may become necessary when neither `async` nor `fakeAsync`
can tolerate a particular asynchronous activity. That's rare but it happens. can tolerate a particular asynchronous activity. That's rare but it happens.
虽然不推荐使用`jasmine.done`技术,但是它可能在`async`和`fakeAsync`都无法容纳一个特定的异步行为时,变得很有必要。很少见,但是有可能发生。
a(href="#top").to-top Back to top a(href="#top").to-top Back to top
a(href="#top").to-top 返回顶部
.l-hr .l-hr