Дразнящий serverless-mysql используя sinon

Вы можете использовать:

момент-часовой пояс

<script src="moment.js"></script>
<script src="moment-timezone-with-data.js"></script>

// retrieve timezone by name (i.e. "America/Chicago")
moment.tz.guess();

Определение часового пояса браузера довольно сложно, так как информации о браузере мало.

Moment Timezone использует Date.getTimezoneOffset() и Date.toString() в течение нескольких минут вокруг текущего года, чтобы собрать как можно больше информации о среде браузера. Затем он сравнивает эту информацию со всеми данными часового пояса и возвращает самое близкое соответствие. В случае связей возвращается часовой пояс с городом с наибольшей численностью населения.

console.log(moment.tz.guess()); // America/Chicago
1
задан dirkk 28 March 2019 в 17:17
поделиться

1 ответ

require('serverless-mysql') возвращает функцию , которая при каждом вызове возвращает различное значение , поэтому высмеивает свойства результата одного вызова вон ' t влияет на возвращаемое значение другого вызова .

Это означает, что вы должны смоделировать саму функцию, что означает насмешку над всем модулем.

sinon не предоставляет способ макетировать весь модуль, поэтому вам придется использовать что-то еще для этой части.

Вот рабочий тест с использованием proxyquire для макета модуля serverless-mysql:

const chai = require('chai');
const sinon = require('sinon');
const expect = chai.expect;
const proxyquire = require('proxyquire');

const event = {
  pathParameters: {
    name: 'johndoe'
  }
}
var context;

var successConnectionObject = {
  connect: function () {
    return Promise.resolve();
  },
  query: function (sqlQuery, params) {
    return Promise.resolve([{
      first_name: 'first',
      last_name: 'last',
      bk: 'bk',
      current_team: 'team'
    }]);
  },
  end: function () { }
}

const stub = sinon.stub().returns(successConnectionObject);
const app = proxyquire('../../app.js', { 'serverless-mysql': stub });

describe('Tests', function () {
  it('verifies successful response', async () => {
    const result = await app.lambdaHandler(event, context);

    expect(result).to.be.an('object');  // Success!
    expect(result.statusCode).to.equal(200);  // Success!

    sinon.assert.calledWithExactly(stub, {
      config: {
        host: process.env.DB_HOST,
        user: process.env.DB_USER,
        password: process.env.DB_PASSWORD
      }
    });  // Success!
  });
});
0
ответ дан brian-lives-outdoors 28 March 2019 в 17:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: