gpt4 book ai didi

typescript - Jasmine 监视导入的模块( typescript )

转载 作者:行者123 更新时间:2023-12-05 06:31:32 28 4
gpt4 key购买 nike

我正在尝试使用 jasmine 和 typescript 的静态方法测试一个简单的实用程序类。问题是助手类导入第 3 方库来实现目标。我需要测试这个第 3 方库是否在每种情况下都被调用。

import Helpers from '../../src/utils/Helpers';
import {parseString} from 'xml2js';



describe('Helper class', function() {
let mockParseString: any;

describe('xmlToJson', function() {
beforeEach(function(done) {
mockParseString = jasmine.createSpy('parseString', parseString);
// spyOn(xml2js, 'parseString').and.callFake(function(xml: string, callback: (error: any, data: object) => void) {
//
// });

setTimeout(() => {
done();
}, 1);
})


it('calls library to parse string', async function(done) {
await Helpers.xmlToJson('<div></div>');

expect(mockParseString).toHaveBeenCalled();
done();
})
})
});

然后在辅助类中,我只是将回调函数包装在一个 promise 中:

import {convertableToString, OptionsV2, parseString} from 'xml2js';
export default class Helpers {
public static xmlToJson(xml: convertableToString, options?: OptionsV2): Promise<any> {
return new Promise((resolve, reject) => {
if(options) {
parseString(xml, (err, results) => {
if(err) {
reject(err);
}

resolve(results);
});
} else {
parseString(xml, options, (err, results) => {
if(err) {
reject(err);
}

resolve(results);
});
}
})
}
}

我得到的错误是没有调用 spy 。我已经研究了一段时间,但还没有找到让 spy 工作的方法。也许这根本不可能。

编辑

我如何调用测试:

 ./node_modules/.bin/ts-node ./node_modules/.bin/jasmine spec/utils/Helpers-spec.ts 

最佳答案

这是对您的代码的工作测试:

import Helpers from '../../src/utils/Helpers';
import * as xml2js from 'xml2js';

describe('Helper class', function() {

let mockParseString;

describe('xmlToJson', function() {

beforeAll(() => {
mockParseString = spyOn(xml2js, 'parseString').and.callThrough();
});

it('calls library to parse string', (done) => {
(async () => {
await Helpers.xmlToJson('<div></div>');
expect(mockParseString).toHaveBeenCalled();
})().then(() => done());
});
});
});

关于typescript - Jasmine 监视导入的模块( typescript ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51791845/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com