Тестирование интеграции метеоров, конечная точка 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.