You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Govmomi使用simulator.ESX()创建Rest客户端登录报404问题咨询

问题根因

你遇到的404错误是模拟器选型错误导致的:

  • simulator.ESX() 用于模拟独立ESXi主机环境,该环境没有实现vAPI/REST协议的相关路由端点,你调用的/rest/com/vmware/cis/session是vCenter Server专属的REST会话接口,ESXi本身不提供这套API能力,因此请求会直接返回404,和你业务客户端的实现逻辑无关。
  • Govmomi的simulator模块不需要额外引入其他组件,只需要切换为对应vCenter的模拟实例即可支持REST客户端测试。
修复方案
  1. 将模拟实例从simulator.ESX()替换为simulator.VPX(),该类型专门用于模拟vCenter Server环境,默认内置了vAPI/REST基础端点,支持会话登录等核心REST接口调用。
  2. 构造测试服务URL时,需要携带vCenter模拟器默认的内置凭据,否则登录阶段会报认证失败,默认账号信息为:用户名Administrator@vsphere.local,密码Admin!23。

修正后的单元测试代码如下:

func TestGetRestClient(t *testing.T){
	ctx := context.Background()
	// 替换为vCenter模拟实例
	model := simulator.VPX()
	defer model.Remove()
	err := model.Create()
	if err != nil {
		t.Fatal(err)
	}
	server := model.Service.NewServer()
	defer server.Close()
	// 配置默认认证凭据
	server.URL.User = url.UserPassword("Administrator@vsphere.local", "Admin!23")
	client := RestClient{url: server.URL}
	_, err = client.GetRestClient(ctx)
	if err != nil {
		t.Errorf("err = %v", err)
		return
	}
}
补充说明

如果后续测试场景需要用到VPX模拟器默认未实现的vAPI接口,可以通过simulator提供的handler注册方法自定义对应路由的返回逻辑,默认实现已经可以覆盖REST客户端初始化、基础资源查询等通用单元测试需求。

内容的提问来源于stack exchange,提问作者RISHI CHORDIA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:48:10