Created
April 28, 2014 13:31
-
-
Save up1/11372126 to your computer and use it in GitHub Desktop.
Demo for Dependency Injection with Golang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package di | |
import ( | |
"fmt" | |
) | |
func AverageScore() float64 { | |
score := getTotalScore() | |
member := getAllMember() | |
return float64(score / member) | |
} | |
var getAllMember = func() int { | |
return 10 | |
} | |
var getTotalScore = func() int { | |
return 100 | |
} | |
func main() { | |
fmt.Println(AverageScore()) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package di | |
import ( | |
"fmt" | |
) | |
func AverageScore() float64 { | |
score := getTotalScore() | |
member := getAllMember() | |
return float64(score/member) | |
} | |
func getAllMember() int { | |
return 10 | |
} | |
func getTotalScore() int { | |
return 100 | |
} | |
func main() { | |
fmt.Println( AverageScore() ) | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func TestAverageScoreMock(t *testing.T) { | |
var callTotalScore = 0 | |
var callAllMember = 0 | |
getTotalScore = func() int { | |
callTotalScore++; | |
return 50 | |
} | |
getAllMember = func() int { | |
callAllMember++; | |
return 2 | |
} | |
AverageScore() | |
if callTotalScore != 1 { t.Error("getTotalScore should have been called 1 time only") } | |
if callAllMember != 1 { t.Error("getAllMember should have been called 1 time only") } | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func TestAverageScoreReal(t *testing.T) { | |
var result = AverageScore() | |
if result != 10 { | |
t.Errorf("Expected %v to equal average", 10) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func TestAverageScoreStub(t *testing.T) { | |
getTotalScore = func() int { | |
return 200 | |
} | |
getAllMember = func() int { | |
return 5 | |
} | |
var result = AverageScore() | |
if result != 40 { | |
t.Errorf("Expected %v to equal average", 40) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment