最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin18浏览0评论

如何在茉莉花中测试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:

发布评论

评论列表(0)

  1. 暂无评论