Meteor 集成测试,rest api velocity 镜像中的端点与 jasmine
Meteor integration testing, rest api endpoint in velocity's mirror with jasmine
我正在尝试为用流星编写的 API 端点创建测试。我正在使用茉莉花和速度。它旨在 运行 在同一个项目中,这就是我使用它们的原因。
当我尝试 运行 测试并检查端点中的数据时,问题就来了。我在 mongodb 副本中有一个引导数据集,当我 POST 它时,它与在本地应用程序中引导的数据集不匹配。
这是示例代码:
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,但没有用。如何查看镜像的端口?
提前致谢!
使用 Meteor.absoluteUrl
而不是对端口进行硬编码。
在你的代码中,这样做:
response = Meteor.http.call(
"POST",
Meteor.absoluteUrl("api/myMethod"), // this bit has changed.
{
data: {
"userId":
},
timeout: 1000
}
);
当测试运行时,你的测试镜像会动态生成一个绝对的url。
我正在尝试为用流星编写的 API 端点创建测试。我正在使用茉莉花和速度。它旨在 运行 在同一个项目中,这就是我使用它们的原因。 当我尝试 运行 测试并检查端点中的数据时,问题就来了。我在 mongodb 副本中有一个引导数据集,当我 POST 它时,它与在本地应用程序中引导的数据集不匹配。 这是示例代码:
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,但没有用。如何查看镜像的端口? 提前致谢!
使用 Meteor.absoluteUrl
而不是对端口进行硬编码。
在你的代码中,这样做:
response = Meteor.http.call(
"POST",
Meteor.absoluteUrl("api/myMethod"), // this bit has changed.
{
data: {
"userId":
},
timeout: 1000
}
);
当测试运行时,你的测试镜像会动态生成一个绝对的url。