如何在茉莉花中测试SSM getParameter方法?

编程入门 行业动态 更新时间:2024-10-10 01:20:52

如何在<a href=https://www.elefans.com/category/jswz/34/1754053.html style=茉莉花中测试SSM getParameter方法?"/>

如何在茉莉花中测试SSM getParameter方法?

我如何测试这样的东西?

const ssmParameterData = await ssm.getParameter(params, async (error, data) => {
if (error) throw error;

return data;
}).promise();  

我已经尝试过模拟方法

spyOn(ssm, 'getParameter').and.returnValue(ssmParams);

并且出现类似错误

 TypeError: Cannot read property 'promise' of undefined
回答如下:

这里是单元测试解决方案:

index.js

const AWS = require('aws-sdk');

const ssm = new AWS.SSM();

async function main(params) {
  const ssmParameterData = await ssm
    .getParameter(params, (error, data) => {
      if (error) throw error;
      return data;
    })
    .promise();
  return ssmParameterData;
}

module.exports = { ssm, main };

index.test.js

const { ssm, main } = require('./');

describe('60138152', () => {
  it('should pass', async () => {
    const data = 'fake data';
    const getParameterRequestStub = { promise: jasmine.createSpy('promise') };
    const getParameterStub = spyOn(ssm, 'getParameter').and.callFake((params, callback) => {
      callback(null, data);
      getParameterRequestStub.promise.and.resolveTo(data);
      return getParameterRequestStub;
    });
    await expectAsync(main('test params')).toBeResolvedTo('fake data');
    expect(getParameterStub).toHaveBeenCalledWith('test params', jasmine.any(Function));
    expect(getParameterRequestStub.promise).toHaveBeenCalledTimes(1);
  });

  it('should throw error', async () => {
    const mError = new Error('network');
    const getParameterRequestStub = { promise: jasmine.createSpy('promise') };
    const getParameterStub = spyOn(ssm, 'getParameter').and.callFake((params, callback) => {
      callback(mError);
      getParameterRequestStub.promise.and.rejectWith(mError);
      return getParameterRequestStub;
    });
    await expectAsync(main('test params')).toBeRejectedWithError('network');
    expect(getParameterStub).toHaveBeenCalledWith('test params', jasmine.any(Function));
  });
});

具有100%覆盖率的单元测试结果:

Executing 2 defined specs...
Running in random order... (seed: 87758)

Test Suites & Specs:
(node:93291) ExperimentalWarning: The fs.promises API is experimental

1. 60138152
   ✔ should pass (10ms)
   ✔ should throw error (1ms)

>> Done!


Summary:

 
          

更多推荐

如何在茉莉花中测试SSM getParameter方法?

本文发布于:2024-05-07 07:55:35,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:茉莉花   测试   方法   如何在   getParameter

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!