Javascript 如何在node.js(jasmine)中触发错误回调

Javascript 如何在node.js(jasmine)中触发错误回调,javascript,node.js,typescript,jasmine,karma-jasmine,Javascript,Node.js,Typescript,Jasmine,Karma Jasmine,我正在尝试使用node.js typescript测试s3 putObject函数的错误回调,并使用jasmine karma测试单元测试 @Service() export class S3Service { @Inject() private s3: S3; async upload(params: any) { return new Promise((resolve) => { this.s3.putObject(

我正在尝试使用node.js typescript测试s3 putObject函数的错误回调,并使用jasmine karma测试单元测试

@Service()
export class S3Service {
    @Inject()
    private s3: S3;

      async upload(params: any) {
        return new Promise((resolve) => {
            this.s3.putObject(params, ((error: any) => {
                if (error) {           // I want to test this statement
                    throw error;
                } else {
                    resolve('example');
                }
            }));
        });
    }
}
这是我的单元测试。从现在起,我将创建新的错误对象,并将其传递到模拟callFake函数中的回调函数中

    it ('s3 trigger error callback', async () => {
        const params = {
            Bucket: example,
            Key: example,
            ContentType: example,
            Body: example,
            ACL: example
        };

        let s3 = Container.get(S3);
        const err: any = new Error('Triggered error string');

        spyOn(s3, 'putObject').and.callFake((param: any, fn: any ) => fn(err));

        await Container.get(S3Service).upload(params);

        expect(s3.putObject).toThrowError(err);
    });
试验结果为: 失败: 1) s3服务s3触发错误回调 信息: 错误:触发的错误字符串 堆栈: 错误:触发的错误字符串

如何正确触发错误回调