Skip to content

Commit 3365ecc

Browse files
committed
test(integration): add test for unknown dependency exception
1 parent 9acaa9b commit 3365ecc

3 files changed

Lines changed: 34 additions & 1 deletion

File tree

integration/injector/e2e/property-injection.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { expect } from 'chai';
33
import { DependencyService } from '../src/properties/dependency.service';
44
import { PropertiesModule } from '../src/properties/properties.module';
55
import { PropertiesService } from '../src/properties/properties.service';
6+
import { UnknownDependenciesException } from '@nestjs/core/errors/exceptions/unknown-dependencies.exception';
67

78
describe('Injector', () => {
89
it('should resolve property-based dependencies', async () => {
@@ -14,5 +15,30 @@ describe('Injector', () => {
1415

1516
expect(app.get(PropertiesService).service).to.be.eql(dependency);
1617
expect(app.get(PropertiesService).token).to.be.true;
18+
expect(app.get(PropertiesService).symbolToken).to.be.true;
19+
});
20+
21+
it('should throw UnknownDependenciesException when dependency is not met', async () => {
22+
let exception;
23+
24+
try {
25+
const builder = Test.createTestingModule({
26+
providers: [
27+
DependencyService,
28+
PropertiesService,
29+
{
30+
provide: 'token',
31+
useValue: true,
32+
},
33+
// symbol token is missing here
34+
],
35+
});
36+
const app = await builder.compile();
37+
app.get(DependencyService);
38+
} catch (e) {
39+
exception = e;
40+
}
41+
42+
expect(exception).to.be.instanceOf(UnknownDependenciesException);
1743
});
1844
});

integration/injector/src/properties/properties.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Module } from '@nestjs/common';
22
import { DependencyService } from './dependency.service';
3-
import { PropertiesService } from './properties.service';
3+
import { PropertiesService, SYMBOL_TOKEN } from './properties.service';
44

55
@Module({
66
providers: [
@@ -10,6 +10,10 @@ import { PropertiesService } from './properties.service';
1010
provide: 'token',
1111
useValue: true,
1212
},
13+
{
14+
provide: SYMBOL_TOKEN,
15+
useValue: true,
16+
},
1317
],
1418
})
1519
export class PropertiesModule {}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
import { Inject, Injectable } from '@nestjs/common';
22
import { DependencyService } from './dependency.service';
33

4+
export const SYMBOL_TOKEN = Symbol('token');
5+
46
@Injectable()
57
export class PropertiesService {
68
@Inject() service: DependencyService;
79
@Inject('token') token: boolean;
10+
@Inject(SYMBOL_TOKEN) symbolToken: boolean;
811
}

0 commit comments

Comments
 (0)