Skip to content

Commit d903542

Browse files
committed
Merge pull request #30 from Spy-Seth/fix/mock-service
Always expose the container `mockService` method
2 parents d0d1e88 + 3f27c2c commit d903542

File tree

3 files changed

+27
-62
lines changed

3 files changed

+27
-62
lines changed

.travis.yml

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@ language: node_js
33
sudo: false
44

55
node_js:
6-
- "5.7"
7-
- "5.6"
8-
- "5.5"
9-
- "5.4"
10-
- "5.3"
11-
- "5.2"
12-
- "5.1"
13-
- "5.0"
14-
- "4.3"
15-
- "4.2"
6+
# Current
7+
- "6.1"
8+
- "6.0"
9+
- "5.9"
10+
# LTS
11+
- "4.4"
12+
# Maintenance
1613
- "0.12"
14+
- "0.10"
1715

1816
script:
1917
- npm test

src/Container.js

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -69,25 +69,24 @@ Container.prototype.getService = function (name) {
6969
return serviceInstance;
7070
};
7171

72-
if (process.env.NODE_ENV === 'test') {
73-
/**
74-
* Replace a service instance by a mocked instance. Only avialable in test environement.
75-
*
76-
* @param {String} name
77-
* @param {Function} mock
78-
*/
79-
Container.prototype.mockService = function (name, mock) {
80-
if (!this.serviceDefinitionCollection.hasServiceDefinition(name)) {
81-
throw new Error('Unknown service "' + name + '".');
82-
}
83-
84-
if (!this.serviceStorage.hasInstance(name)) {
85-
this.serviceStorage.addInstance(name, mock);
86-
return;
87-
}
88-
89-
this.serviceStorage.replaceInstance(name, mock);
90-
};
91-
}
72+
/**
73+
* Replace a service instance by a mocked instance. Should only be used in test
74+
* environement.
75+
*
76+
* @param {String} name
77+
* @param {Function} mock
78+
*/
79+
Container.prototype.mockService = function (name, mock) {
80+
if (!this.serviceDefinitionCollection.hasServiceDefinition(name)) {
81+
throw new Error('Unknown service "' + name + '".');
82+
}
83+
84+
if (!this.serviceStorage.hasInstance(name)) {
85+
this.serviceStorage.addInstance(name, mock);
86+
return;
87+
}
88+
89+
this.serviceStorage.replaceInstance(name, mock);
90+
};
9291

9392
module.exports = Container;

tests/units/ContainerSpec.js

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,6 @@ describe('Container', function () {
1313
process.env.NODE_ENV = previousProcessEnv;
1414
});
1515

16-
/**
17-
* @see http://stackoverflow.com/a/16060619
18-
* @param {[type]} module
19-
* @return {[type]}
20-
*/
21-
function requireUncached(module) {
22-
delete require.cache[require.resolve(module)]
23-
return require(module)
24-
}
25-
2616
it('should throw a error when trying to mock an undefined service', function () {
2717
var serviceDefinitionCollection = sinon.createStubInstance(ServiceDefinitionCollection);
2818
var parameterCollection = sinon.createStubInstance(ParameterCollection);
@@ -34,28 +24,6 @@ describe('Container', function () {
3424
}).to.throw('Unknown service "foo".');
3525
});
3626

37-
it('should provide an api to mock a service in test environement', function () {
38-
var serviceDefinitionCollection = sinon.createStubInstance(ServiceDefinitionCollection);
39-
var parameterCollection = sinon.createStubInstance(ParameterCollection);
40-
41-
process.env.NODE_ENV = 'test';
42-
var FreshContainer = requireUncached('./../../src/Container');
43-
44-
var container = new FreshContainer(serviceDefinitionCollection, parameterCollection);
45-
expect(container).to.have.property('mockService');
46-
});
47-
48-
it('should not provide an api to mock a service in production environement', function () {
49-
var serviceDefinitionCollection = sinon.createStubInstance(ServiceDefinitionCollection);
50-
var parameterCollection = sinon.createStubInstance(ParameterCollection);
51-
52-
process.env.NODE_ENV = 'production';
53-
var FreshContainer = requireUncached('./../../src/Container');
54-
55-
var container = new FreshContainer(serviceDefinitionCollection, parameterCollection);
56-
expect(container).to.not.have.property('mockService');
57-
});
58-
5927
it('should check the service cyclic dependencies if the container validation activated', function () {
6028
var serviceDefinitionCollection = sinon.createStubInstance(ServiceDefinitionCollection);
6129
serviceDefinitionCollection.checkCyclicDependencies.returns(null);

0 commit comments

Comments
 (0)