angular-cn/public/docs/js/latest/api/http/MockBackend-class.jade

197 lines
5.2 KiB
Plaintext

p.location-badge.
exported from <a href='../http'>angular2/http</a>
defined in <a href="https://github.com/angular/angular/tree/2.0.0-alpha.37/modules/angular2/src/http/backends/mock_backend.ts#L98-L226">angular2/src/http/backends/mock_backend.ts (line 98)</a>
:markdown
A mock backend for testing the <a href='Http-class.html'><code>Http</code></a> service.
This class can be injected in tests, and should be used to override bindings
to other backends, such as <a href='XHRBackend-class.html'><code>XHRBackend</code></a>.
#Example
```
import {MockBackend, DefaultOptions, Http} from 'angular2/http';
it('should get some data', inject([AsyncTestCompleter], (async) => {
var connection;
var injector = Injector.resolveAndCreate([
MockBackend,
bind(Http).toFactory((backend, defaultOptions) => {
return new Http(backend, defaultOptions)
}, [MockBackend, DefaultOptions])]);
var http = injector.get(Http);
var backend = injector.get(MockBackend);
//Assign any newly-created connection to local variable
backend.connections.toRx().subscribe(c => connection = c);
http.request('data.json').toRx().subscribe((res) => {
expect(res.text()).toBe('awesome');
async.done();
});
connection.mockRespond(new Response('awesome'));
}));
```
This method only exists in the mock implementation, not in real Backends.
.l-main-section
h2 Annotations
.l-sub-section
h3.annotation Injectable
pre.prettyprint
code.
@Injectable()
.l-main-section
h2 Members
.l-sub-section
h3#constructor constructor
pre.prettyprint
code.
constructor()
:markdown
.l-sub-section
h3#connections connections
:markdown
<a href='../core/EventEmitter-class.html'><code>EventEmitter</code></a>
of <a href='MockConnection-class.html'><code>MockConnection</code></a> instances that have been created by this backend. Can be subscribed
to in order to respond to connections.
#Example
```
import {MockBackend, Http, BaseRequestOptions} from 'angular2/http';
import {Injector} from 'angular2/core';
it('should get a response', () => {
var connection; //this will be set when a new connection is emitted from the backend.
var text; //this will be set from mock response
var injector = Injector.resolveAndCreate([
MockBackend,
bind(Http).toFactory(backend, options) {
return new Http(backend, options);
}, [MockBackend, BaseRequestOptions]]);
var backend = injector.get(MockBackend);
var http = injector.get(Http);
backend.connections.toRx().subscribe(c => connection = c);
http.request('something.json').toRx().subscribe(res => {
text = res.text();
});
connection.mockRespond(new Response({body: 'Something'}));
expect(text).toBe('Something');
});
```
This property only exists in the mock implementation, not in real Backends.
.l-sub-section
h3#connectionsArray connectionsArray
:markdown
An array representation of `connections`. This array will be updated with each connection that
is created by this backend.
This property only exists in the mock implementation, not in real Backends.
.l-sub-section
h3#pendingConnections pendingConnections
:markdown
<a href='../core/EventEmitter-class.html'><code>EventEmitter</code></a> of <a href='MockConnection-class.html'><code>MockConnection</code></a> instances that haven't yet been resolved (i.e.
with a `readyState`
less than 4). Used internally to verify that no connections are pending via the
`verifyNoPendingRequests` method.
This property only exists in the mock implementation, not in real Backends.
.l-sub-section
h3#verifyNoPendingRequests verifyNoPendingRequests
pre.prettyprint
code.
verifyNoPendingRequests()
:markdown
Checks all connections, and raises an exception if any connection has not received a response.
This method only exists in the mock implementation, not in real Backends.
.l-sub-section
h3#resolveAllConnections resolveAllConnections
pre.prettyprint
code.
resolveAllConnections()
:markdown
Can be used in conjunction with `verifyNoPendingRequests` to resolve any not-yet-resolve
connections, if it's expected that there are connections that have not yet received a response.
This method only exists in the mock implementation, not in real Backends.
.l-sub-section
h3#createConnection createConnection
pre.prettyprint
code.
createConnection(req: Request)
:markdown
Creates a new <a href='MockConnection-class.html'><code>MockConnection</code></a>. This is equivalent to calling `new
MockConnection()`, except that it also will emit the new `Connection` to the `connections`
emitter of this `MockBackend` instance. This method will usually only be used by tests
against the framework itself, not by end-users.