Enabled fetch-mock with tests.

This patch adds the fetch-mock library, demonstrating how it may be
used to properly mock out API calls. An important change that was
made was the way that 'isomorphic-fetch' was included. Since
fetch-mock makes the assumption that only the window.fetch object
should be overridden, we cannot invoke it via a variable. Instead,
I've simply imported the library, which during import will override
global.fetch if necessary.

Change-Id: Ibd88b61595b4492f375294a8a08031a1a001a10c
This commit is contained in:
Michael Krotscheck 2016-08-04 12:03:04 -07:00
parent 0cec65f5cc
commit 4e9cf48b43
3 changed files with 27 additions and 3 deletions

View File

@ -36,6 +36,7 @@
"babel-register": "^6.9.0",
"eslint": "^2.4.0",
"eslint-config-openstack": "2.0.0",
"fetch-mock": "^5.0.5",
"istanbul": "^1.0.0-alpha.2",
"jasmine": "^2.4.1",
"karma": "^1.1.1",

View File

@ -1,14 +1,13 @@
import 'babel-polyfill';
import fetch from 'isomorphic-fetch';
import 'isomorphic-fetch';
import log from 'loglevel';
log.setLevel('INFO');
export default class Test {
getUrl(url) {
getUrl (url) {
return fetch(url)
.then((response) => {
log.info(response.status);
return response;
});
}

View File

@ -1,8 +1,32 @@
import Test from "../../src/index.js";
const FetchMock = require('fetch-mock');
describe("Simple test", () => {
afterEach(() => {
FetchMock.reset();
});
it("should export a class", () => {
let t = new Test();
expect(t).toBeDefined();
});
it("should retrieve URL's", (done) => {
FetchMock.get("http://example.com/", {
status: 200,
body: "This is a test"
});
let t = new Test();
t.getUrl("http://example.com/")
.then((response) => {
return response.text();
})
.then((body) => {
expect(body).toEqual("This is a test");
done();
});
});
});