断言装饰器抛出
Assert decorator throws
我创建了一个装饰器,它包含一个规则,当它与 class 一起使用时抛出一个规则,它的一个真正的基本版本如下所示:
function someDecorator(target: any) {
var msg = "Decorator can only be applyed once";
if(target.annotated != undefined) throw new Error(msg);
target.annotated = true;
}
因此,如果开发人员多次尝试使用该开发人员,它将抛出:
@someDecorator
@someDecorator // throws
class Test {
}
一切都按预期工作,我想编写一个单元测试来验证此功能。我正在使用 mocha、chai 和 sinon。
如何断言 someDecorator 抛出异常?
How can I assert that someDecorator throws?
你基本上想调用它两次 (someDecorator(someDecorator(function(){})
) 和 assert a throw.
另一种可能的方法:
declare function __decorate(decorators, target, key?, desc?);
declare function __param(paramIndex, decorator);
describe("@named decorator \n", () => {
it("It should throw when applayed mutiple times \n", () => {
var useDecoratorMoreThanOnce = function() {
__decorate([
__param(0, named("a")),
__param(0, named("b"))
], NamedTooManyTimesWarrior);
};
var msg = "Metadadata key named was used more than once in a parameter.";
expect(useDecoratorMoreThanOnce).to.throw(msg);
});
});
我创建了一个装饰器,它包含一个规则,当它与 class 一起使用时抛出一个规则,它的一个真正的基本版本如下所示:
function someDecorator(target: any) {
var msg = "Decorator can only be applyed once";
if(target.annotated != undefined) throw new Error(msg);
target.annotated = true;
}
因此,如果开发人员多次尝试使用该开发人员,它将抛出:
@someDecorator
@someDecorator // throws
class Test {
}
一切都按预期工作,我想编写一个单元测试来验证此功能。我正在使用 mocha、chai 和 sinon。
如何断言 someDecorator 抛出异常?
How can I assert that someDecorator throws?
你基本上想调用它两次 (someDecorator(someDecorator(function(){})
) 和 assert a throw.
另一种可能的方法:
declare function __decorate(decorators, target, key?, desc?);
declare function __param(paramIndex, decorator);
describe("@named decorator \n", () => {
it("It should throw when applayed mutiple times \n", () => {
var useDecoratorMoreThanOnce = function() {
__decorate([
__param(0, named("a")),
__param(0, named("b"))
], NamedTooManyTimesWarrior);
};
var msg = "Metadadata key named was used more than once in a parameter.";
expect(useDecoratorMoreThanOnce).to.throw(msg);
});
});