测试Golang导入的函数是什么?

时间:2016-07-20 18:35:37

标签: go

说我在main.go

package main

import "foobar"

func moo() {
  foobar.Boom("!")
}

func main() {
  moo()
}

如何删除Boom并确保使用正确的参数调用它?

1 个答案:

答案 0 :(得分:1)

Go-way将使用界面。即使你无法改变foobar包装。

1)创建一个婴儿潮一代接口

type Boomer interface{
  Boom(string)
}

2)改变moo()接受婴儿潮一代

func moo(b Boomer) {
  b.Boom("!")
}

3)使用foobar

添加变量

对于操场我使用以下构造。但是使用extern包你可以使用foobar.Boom()而不是Println

type foobar struct{}

func (fb foobar) Boom(s string) {
    fmt.Println(s)
}

var f Boomer = foobar{}

https://play.golang.org/p/200WIok1pL

4)在测试中,您实施了一个测试人员

type testboomer struct{
  boomstring string
}

func (tb *testboomer) Boom(s string) {
  tb.boomstring = s
}

调用moo()函数后,testboomer.boomstring显示值。