Тестирование интеграции метеоров, конечная точка api покоя в зеркале скорости с жасмином

Я пытаюсь создать тест для конечной точки API, написанной с помощью метеора. Я использую жасмин и скорость. Он предназначен для запуска в одном проекте, поэтому я использую их. Проблема возникает, когда я пытаюсь запустить тест и проверить данные в конечной точке. У меня есть загрузочный набор данных в реплике mongodb, и когда я размещаю его, он не совпадает с тем, который загружен в локальном приложении. Вот пример кода:

Jasmine.onTest(function () {

describe('RestApi.MyMethod', function () {

it('Expects to fail because it lacks of valid parameters', function () { /*but it fails because of the user can't be found in the real app*/
  var response = "";
  var userId = Meteor.users.findOne({"username": "MyUser"})._id;
  try {
    response = Meteor.http.call(
      "POST",
      "http://localhost:3000/api/myMethod",
      {
        data: {
          "userId": 
        },
        timeout: 1000
      }
    );
  } catch(error){
    expect(error.message.indexOf("failed [400]")).toBeGreaterThan(-1);
    expect(error.message.indexOf("Invalid parameters provided")).toBeGreaterThan(-1);
  }

  expect(response).toBe('');

});

});

});

Я думаю, что это должно указывать на api отдыха зеркала. Есть способ сделать это? Я изменил localhost:3000 на localhost:5000, и это не сработало. Как я могу проверить порт зеркала? Заранее спасибо!

1 ответ

Решение

Использование Meteor.absoluteUrl вместо жесткого кодирования порта.

В вашем коде сделайте это:

response = Meteor.http.call(
  "POST",
  Meteor.absoluteUrl("api/myMethod"), // this bit has changed.
  {
    data: {
      "userId": 
    },
    timeout: 1000
  }
);

Когда тест выполняется, ваше тестовое зеркало будет динамически генерировать абсолютный URL.

Другие вопросы по тегам