我有一个应用程序(epazote),一旦启动就会永远运行,但我想在它阻塞/等待直到ctrl+c被按下或被杀死之前测试一些值。
这是一个小例子:http : //play.golang.org/p/t0spQRJB36
package main
import (
"fmt"
"os"
"os/signal"
)
type IAddString interface {
AddString(string)
}
type addString struct{}
func (self *addString) AddString(s string) {
fmt.Println(s)
}
func block(a IAddString, s string) {
// test this
a.AddString(s)
// ignore this while testing
block := make(chan os.Signal)
signal.Notify(block, os.Interrupt, os.Kill)
for {
signalType := <-block
switch signalType {
default:
signal.Stop(block)
fmt.Printf("%q signal received.", signalType)
os.Exit(0)
}
}
}
func main() {
a := &addString{}
block(a, "foo")
}
我想知道在测试时是否可以忽略代码的某些部分,或者如何测试这种情况,我已经实现了一个接口,在这种情况下用于测试AddString 帮助我测试某些部分但不知道如何避免“阻塞”并进行测试。
有任何想法吗?
更新:将代码放入Addstring另一个函数的循环中有效但仅用于测试该函数,但是如果我想进行完整的代码覆盖,我仍然需要检查/测试阻塞部分,例如如何测试它的行为是否正常当收到ctrl+c或 a 时kill -HUP,我在想可能会创建一个假的,signal.Notify但不知道如何覆盖导入的包,以防万一。
扬帆大鱼
GCT1015
相关分类