为了账号安全,请及时绑定邮箱和手机立即绑定

您如何编写测试来检查特定类型的变量?

您如何编写测试来检查特定类型的变量?

Go
小怪兽爱吃肉 2022-11-23 20:29:46
我有一个返回特定类型客户端的函数,我想通过检查返回的变量类型是否为 type 来测试该函数azblob.BlockBlobClient。当我使用一个简单的if语句来检查这样的类型时:if var == azblob.BlockBlobClient我得到了错误azblob.BlockBlobClient (type) is not an expressiontesting使用标准包测试变量类型的正确方法是什么?非常感谢!//函数func getClient(blob, container string) azblob.BlockBlobClient {  storageAccount := os.Getenv("AZURE_STORAGE_ACCOUNT_NAME")    cred, err := azidentity.NewDefaultAzureCredential(nil)  if err != nil {      log.Fatal("Invalid credentials with error:" + err.Error())  }  blobUrl := fmt.Sprintf("https://%s.blob.core.windows.net/%s/%s", storageAccount, container, blob)  fmt.Println(blobUrl)  client, err := azblob.NewBlockBlobClient(blobUrl, cred, nil)  if err != nil {      log.Fatal("Unable to create blob client")  }  return client}//测试package main import (    "testing"    "os"    "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob")func TestgetClient(t *testing.T){  blob := "text.txt"  container := "testcontainer"  os.Setenv("AZURE_STORAGE_ACCOUNT_NAME", "mystorageaccount")  client := getClient(blob, container)    if client != azblob.BlockBlobClient {    t.ErrorF("Client should be type BlockBlobClient")  }}
查看完整描述

1 回答

?
莫回无

TA贡献1865条经验 获得超7个赞

你真的不需要这样做,因为你写的函数只返回azblob.BlockBlobClient类型,编译器甚至会在构建测试之前检查它。如果不是这种情况,测试将无法运行。


我做了以下更改以显示这一点:


//函数

package main


import (

    "fmt"

    "log"

    "os"


    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"

    "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"

)


func getClient(blob, container string) interface{} {

    storageAccount := os.Getenv("AZURE_STORAGE_ACCOUNT_NAME")


    cred, err := azidentity.NewDefaultAzureCredential(nil)

    if err != nil {

        log.Fatal("Invalid credentials with error:" + err.Error())

    }


    blobUrl := fmt.Sprintf("https://%s.blob.core.windows.net/%s/%s", storageAccount, container, blob)

    fmt.Println(blobUrl)

    client, err := azblob.NewBlockBlobClient(blobUrl, cred, nil)

    if err != nil {

        log.Fatal("Unable to create blob client")

    }

    return client

}

//测试

package main


import (

    "os"

    "testing"


    "github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"

)


func TestgetClient(t *testing.T) {

    blob := "text.txt"

    container := "testcontainer"

    os.Setenv("AZURE_STORAGE_ACCOUNT_NAME", "mystorageaccount")

    client := getClient(blob, container)


    _, ok := client.(azblob.BlockBlobClient)

    if !ok {

        t.Errorf("client should be type BlockBlobClient")

    }

}


查看完整回答
反对 回复 2022-11-23
  • 1 回答
  • 0 关注
  • 80 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信