我试图测试我的一个套餐达到100%。 但是,我无法在没有"反对系统的情况下找到我能做到的事情。 (函数指针等)。
我尝试做类似的事情,但由于"真实"我无法达到100%。功能:
var fs fileSystem = osFS{}
type fileSystem interface {
Open(name string) (file, error)
Stat(name string) (os.FileInfo, error)
}
type file interface {
io.Closer
io.Reader
io.ReaderAt
io.Seeker
Stat() (os.FileInfo, error)
}
// osFS implements fileSystem using the local disk.
type osFS struct{}
func (osFS) Open(name string) (file, error) { return os.Open(name) }
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
(来自https://talks.golang.org/2012/10things.slide#8)
有人会有建议吗? :) 谢谢!
答案 0 :(得分:0)
我试图做同样的事情,只是为了尝试。我通过将所有系统文件调用作为接口引用并且让方法接受接口来实现它。然后,如果没有提供接口,则使用系统方法。我是Go的新手,所以我不确定它是否违反了最佳做法。
import "io/ioutil"
type ReadFile func (string) ([]byte, error)
type FileLoader interface {
LoadPath(path string) []byte
}
// Initializes a LocalFileSystemLoader with default ioutil.ReadFile
// as the method to read file. Optionally allows caller to provide
// their own ReadFile for testing.
func NewLocalFileSystemLoader(rffn ReadFile) *localFileSystemLoader{
var rf ReadFile = ioutil.ReadFile
if rffn != nil {
rf = rffn
}
return &localFileSystemLoader{
ReadFileFn: rf}
}
type localFileSystemLoader struct {
ReadFileFn ReadFile
}
func (lfsl *localFileSystemLoader) LoadPath(path string) []byte {
dat, err := lfsl.ReadFileFn(path)
if err != nil {
panic(err)
}
return dat
}