feat(core): improve NoAnnotationError message
Closes #4866 Closes #5927
This commit is contained in:
parent
e67ebb7f70
commit
197cf09689
|
@ -222,8 +222,10 @@ export class NoAnnotationError extends BaseException {
|
||||||
signature.push(parameter.map(stringify).join(' '));
|
signature.push(parameter.map(stringify).join(' '));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return "Cannot resolve all parameters for " + stringify(typeOrFunc) + "(" +
|
return "Cannot resolve all parameters for '" + stringify(typeOrFunc) + "'(" +
|
||||||
signature.join(', ') + "). " + 'Make sure they all have valid type or annotations.';
|
signature.join(', ') + "). " +
|
||||||
|
"Make sure that all the parameters are decorated with Inject or have valid type annotations and that '" +
|
||||||
|
stringify(typeOrFunc) + "' is decorated with Injectable.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,8 @@ class NoAnnotations {
|
||||||
constructor(secretDependency) {}
|
constructor(secretDependency) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function factoryFn(a) {}
|
||||||
|
|
||||||
export function main() {
|
export function main() {
|
||||||
var dynamicProviders = [
|
var dynamicProviders = [
|
||||||
provide('provider0', {useValue: 1}),
|
provide('provider0', {useValue: 1}),
|
||||||
|
@ -142,10 +144,20 @@ export function main() {
|
||||||
expect(car.engine).toBeAnInstanceOf(TurboEngine);
|
expect(car.engine).toBeAnInstanceOf(TurboEngine);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should throw when no type and not @Inject', () => {
|
it('should throw when no type and not @Inject (class case)', () => {
|
||||||
expect(() => createInjector([NoAnnotations]))
|
expect(() => createInjector([NoAnnotations]))
|
||||||
.toThrowError('Cannot resolve all parameters for NoAnnotations(?). ' +
|
.toThrowError(
|
||||||
'Make sure they all have valid type or annotations.');
|
"Cannot resolve all parameters for 'NoAnnotations'(?). " +
|
||||||
|
'Make sure that all the parameters are decorated with Inject or have valid type annotations ' +
|
||||||
|
"and that 'NoAnnotations' is decorated with Injectable.");
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should throw when no type and not @Inject (factory case)', () => {
|
||||||
|
expect(() => createInjector([provide("someToken", {useFactory: factoryFn})]))
|
||||||
|
.toThrowError(
|
||||||
|
"Cannot resolve all parameters for 'factoryFn'(?). " +
|
||||||
|
'Make sure that all the parameters are decorated with Inject or have valid type annotations ' +
|
||||||
|
"and that 'factoryFn' is decorated with Injectable.");
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should cache instances', () => {
|
it('should cache instances', () => {
|
||||||
|
|
Loading…
Reference in New Issue