Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor集成测试,velocity中的rest api端点';茉莉花的镜子_Javascript_Rest_Meteor_Meteor Velocity_Meteor Jasmine - Fatal编程技术网

Javascript Meteor集成测试,velocity中的rest api端点';茉莉花的镜子

Javascript Meteor集成测试,velocity中的rest api端点';茉莉花的镜子,javascript,rest,meteor,meteor-velocity,meteor-jasmine,Javascript,Rest,Meteor,Meteor Velocity,Meteor Jasmine,我正在尝试为使用meteor编写的API端点创建一个测试。我用的是茉莉花和velocity。它打算在同一个项目中运行,这就是我使用它们的原因。 当我试图运行测试并检查端点中的数据时,问题就出现了。我在mongodb副本中有一个引导数据集,当我发布它时,它与本地应用中引导的数据集不匹配。 下面是示例代码: Jasmine.onTest(function () { describe('RestApi.MyMethod', function () { it('Expects to fail bec

我正在尝试为使用meteor编写的API端点创建一个测试。我用的是茉莉花和velocity。它打算在同一个项目中运行,这就是我使用它们的原因。 当我试图运行测试并检查端点中的数据时,问题就出现了。我在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('');

});

});

});
我认为它应该指向镜像的RESTAPI。有办法吗?我将localhost:3000更改为localhost:5000,但它不起作用。如何检查镜像的端口?
提前谢谢

使用Meteor.absoluteUrl,而不是硬编码端口

在代码中,执行以下操作:

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

当测试运行时,您的测试镜像将动态生成一个绝对url。

似乎端口选项现在是自动的,而不是硬编码为5000。您可以使用JASMINE\u SERVER\u MIRROR\u port env变量配置端口(在某些地方名称不正确)。想知道是否有办法获取镜像在运行时运行测试的ip和端口。如果在
Meteor.http.call
中使用相对路径会怎么样?谢谢!改变了我的测试,它成功了!不幸的是,我不能投赞成票!这在当前的Meteor版本中有效吗?1.2.1