Home > Article > Backend Development > How Can We Test Go Functions Dependent on Constants?
Redefining Constants in Go for Testing
Issue Outline:
In Go, constants provide immutable values that cannot be changed after declaration. However, when testing code that relies on these constants, it becomes challenging to inject different values for testing purposes.
Proposed Solution:
A potential solution lies in refactoring the code to include a second function that takes the base URL as a parameter and calls the original function with the constant value as an argument.
Implementation Details:
Introduce a Helper Function:
Replace the constant baseUrl_ with a function that accepts the base URL as an argument:
<code class="go">func myFuncImpl(baseUrl string) string { // Use `baseUrl` in the function }</code>
Modify the Original Function:
Have the original function (MyFunc()) call the helper function:
<code class="go">func MyFunc() string { return myFuncImpl(baseUrl_) }</code>
Preserve the Constant:
Benefits:
Example:
<code class="go">const baseUrl_ = "http://google.com" func MyFunc() string { return myFuncImpl(baseUrl_) }</code>
In testing code, myFuncImpl() can be called directly and assigned custom values for baseUrl:
<code class="go">func TestMyFunc(t *testing.T) { result := myFuncImpl("http://example.org") // Assertions and tests }</code>
The above is the detailed content of How Can We Test Go Functions Dependent on Constants?. For more information, please follow other related articles on the PHP Chinese website!