拨打tcp:协议不可用,请进行网络组装测试

时间:2019-04-27 13:12:55

标签: go testing webassembly

试图测试一个Web组装功能,该功能会触发POST请求。

收到以下错误:

firePing_test.go:40: ERROR ON POST REQUEST: Post https://not-the-real-api.execute-api.us-east-1.amazonaws.com/testing: dial tcp: Protocol not available

运行: Ubuntu 18.04.2 LTS go版本go1.12.2 linux / amd64

我已经测试过该功能有效,并且在chrome中执行时会发送请求。 当针对linux / amd64进行编译时,测试也会通过。

问题功能:

// FirePing fires a ping
func FirePing(protocol *string, domain *string, params *map[string]string) (*http.Response, error) {

    // Marshal map into POST request body
    reqBody, err := json.Marshal(*params)
    if err != nil {
        return  nil, fmt.Errorf("ERROR ON MARSHAL OF PARAMS: %v", err)
    }

    // Send POST request
    req, err := http.NewRequest("POST", *protocol + "://" + *domain, bytes.NewBuffer(reqBody))
    if err != nil {
        return  nil, fmt.Errorf("ERROR ON FORMING REQUEST: %v", err)
    }
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil,fmt.Errorf("ERROR ON POST REQUEST: %v",err)
    }

    return resp, nil
}

问题测试函数调用:

// FirePing and receive response
    resp, err := FirePing(&config.Config.Protocol, &config.Config.Domain, &m)
    if err != nil {
        t.Error(err)
        return
    }

应通过此测试用例,因为它在浏览器中执行了正常的功能调用。

我仅在其他地方看到过这是

http.Get returns Protocol not available error

来自操场的接缝禁用了tcp连接。我正在本地运行此测试

1 个答案:

答案 0 :(得分:1)

MVP版本专门针对在浏览器中运行WASM。因此,浏览器API不允许任意的TCP / IP连接,因此WASM同样受到限制。就是说,WASM一直有超越浏览器的雄心。最新一项名为WASI的倡议将添加浏览器外部需要使用的功能,例如文件I / O和网络原语。