Skip to content

Instantly share code, notes, and snippets.

@waldemarnt
Last active October 13, 2020 19:01
Show Gist options
  • Save waldemarnt/4965a7443ef63b09a064a0eca9f3b540 to your computer and use it in GitHub Desktop.
Save waldemarnt/4965a7443ef63b09a064a0eca9f3b540 to your computer and use it in GitHub Desktop.
Fake,Spy,Stub, Mock
const Database = {
findAll() {}
}
class UsersController {
constructor(Database) {
this.Database = Database;
}
getAll() {
return this.Database.findAll('users');
}
}
describe('UsersController getAll()', () => {
it('should return a list of users', () => {
const expectedDatabaseResponse = [{
id: 1,
name: 'John Doe',
email: 'john@mail.com'
}];
const fakeDatabase = {
findAll() {
return expectedDatabaseResponse;
}
}
const usersController = new UsersController(fakeDatabase);
const response = usersController.getAll();
expect(response).to.be.eql(expectedDatabaseResponse);
});
});
describe('UsersController getAll()', () => {
it('should call database with correct arguments', () => {
const databaseMock = sinon.mock(Database);
databaseMock.expects('findAll').once().withArgs('users');
const usersController = new UsersController(Database);
usersController.getAll();
databaseMock.verify();
databaseMock.restore();
});
});
describe('UsersController getAll()', () => {
it('should findAll users from database with correct parameters', () => {
const findAll = sinon.spy(Database, 'findAll');
const usersController = new UsersController(Database);
usersController.getAll();
sinon.assert.calledWith(findAll, 'users');
findAll.restore();
});
});
describe('UsersController getAll()', () => {
it('should return a list of users', () => {
const expectedDatabaseResponse = [{
id: 1,
name: 'John Doe',
email: 'john@mail.com'
}];
const findAll = sinon.stub(Database, 'findAll');
findAll.withArgs('users').returns(expectedDatabaseResponse);
const usersController = new UsersController(Database);
const response = usersController.getAll();
sinon.assert.calledWith(findAll, 'users');
expect(response).to.be.eql(expectedDatabaseResponse);
findAll.restore();
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment