我上个月一直在写测试。而且,我已经模拟了一些Promise /回调,并且可以毫无问题地使用它。
但是我有一个情况,我不知道如何测试?:
上下文:我有一个外部服务调用(可与回调一起使用),但我收到了信息,对其进行处理,然后将其解析为对我的应用程序的承诺。
版本0:
00. const processDataFunction = (data) => {
01. ... a lot of work ...
02.
03. return beautyData
04. }
05.
06. export const myCoolFunction = (args) => {
07. const externalService = new ExternalService();
08.
09. return new Promise((resolve, reject) => {
10. externalService.functionWithCallback(args, (response, status) => {
11. if (status === 'OK') {
12. resolve(processDataFunction(response))
13. } else {
14. resolve({ error: status })
15. }
16. }
17. });
18.}
19.
我的第一步是基于How to test callback function with Jasmine
隔离函数,同时导出和测试两者所以,现在我有: 版本1:
lib.js:
export const processDataFunction = (data) => { ... }) // As previous but exported to be able to test it
export const coolFunction = (data) => { ... }) // Just as previous
lib.test.js:
it('test processDataFunction') // Receive raw data and return beauty data is ok
it ('test coolFunction') // It initialized service and call the specific (mocked) function.
我不喜欢导出私有函数的想法,但这是我能做的最好的方法,而且确实很酷。但是,我仍然缺少1件东西。
问题::当我在覆盖范围内运行测试时,我缺少回调函数的测试(版本0中第11至15行中的 ),我该怎么办?测试那个(如果失败的话)?