In my project I have the code split up in packages, one of them named config being used by the main package.
One of the things the config package does is loading configuration file stored in some default location. However, when testing the main package I want config to load another file.
Currently, my code is structured like so:
// config/config.go
package config
var getConfigPath = func() (string, error) {
...
}
func Load() (error) {
path, err := getConfigPath()
...
}
// config/export_test.go
package config
// "export" getConfigPath so that it can be mocked in tests
var GetConfigPath = getConfigPath
// main_test.go
package main_test
import ".../config"
func loadTestConfig() {
// Trying to mock `config.GetConfigPath` here, it doesn't work. `config.GetConfigPath` is undefined
config.GetConfigPath = func() (string, error) {
...
}
}
func TestFoo(...) { ... }
However, if I create a separate _test package in config (i.e. package config_test), there I can get access and modify config.GetConfigPath:
// config/config_test.go
package config_test
import ".../config"
func loadTestConfig() {
// This works
config.GetConfigPath = func() (string, error) {
...
}
}
Is there any workaround to get access to one test package variables in from another test package? Or is there another way to mock a private function from one package in another package's test?
Aucun commentaire:
Enregistrer un commentaire