mirror of
https://github.com/crazybber/awesome-patterns.git
synced 2024-11-22 12:46:03 +03:00
play interface
This commit is contained in:
parent
d6a1cbd47f
commit
07a98a6dd4
15
playground/mocklib/mocks/Robot.go
Normal file
15
playground/mocklib/mocks/Robot.go
Normal file
@ -0,0 +1,15 @@
|
||||
// Code generated by mockery v1.0.0. DO NOT EDIT.
|
||||
|
||||
package mocks
|
||||
|
||||
import mock "github.com/stretchr/testify/mock"
|
||||
|
||||
// Robot is an autogenerated mock type for the Robot type
|
||||
type Robot struct {
|
||||
mock.Mock
|
||||
}
|
||||
|
||||
// SayHi provides a mock function with given fields:
|
||||
func (_m *Robot) SayHi() {
|
||||
_m.Called()
|
||||
}
|
45
playground/mocklib/robot.go
Normal file
45
playground/mocklib/robot.go
Normal file
@ -0,0 +1,45 @@
|
||||
package mocklib
|
||||
|
||||
import "fmt"
|
||||
|
||||
// Robot
|
||||
type Robot interface {
|
||||
SayHi()
|
||||
}
|
||||
|
||||
// ServiceRobot is kind of Robot can offer services
|
||||
type ServiceRobot struct {
|
||||
}
|
||||
|
||||
func (robot *ServiceRobot) SayHi() {
|
||||
fmt.Println("Hi, I'm service robot")
|
||||
}
|
||||
|
||||
// IndustrialRobot is kind of Robot can do some jobs
|
||||
type IndustrialRobot struct {
|
||||
}
|
||||
|
||||
func (robot *IndustrialRobot) SayHi() {
|
||||
fmt.Println("Hi, I'm industrial robot")
|
||||
}
|
||||
|
||||
func StartRobots() {
|
||||
robots := initializeRobots()
|
||||
makeRobotsSayHi(robots)
|
||||
}
|
||||
|
||||
// initialize all robots
|
||||
func initializeRobots() []Robot {
|
||||
robots := []Robot{
|
||||
&ServiceRobot{},
|
||||
&IndustrialRobot{},
|
||||
}
|
||||
return robots
|
||||
}
|
||||
|
||||
// makeRobotsSayHi is used for making robots say hi
|
||||
func makeRobotsSayHi(robots []Robot) {
|
||||
for _, robot := range robots {
|
||||
robot.SayHi()
|
||||
}
|
||||
}
|
32
playground/mocklib/robot_test.go
Normal file
32
playground/mocklib/robot_test.go
Normal file
@ -0,0 +1,32 @@
|
||||
package mocklib
|
||||
|
||||
import (
|
||||
"github.com/weichou1229/go-patterns/playground/mocklib/mocks"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStartRobots(t *testing.T) {
|
||||
StartRobots()
|
||||
}
|
||||
|
||||
func TestMakeRobotsSayHi(t *testing.T) {
|
||||
// create an instance of our test object
|
||||
mockRobotA := new(mocks.Robot)
|
||||
mockRobotB := new(mocks.Robot)
|
||||
|
||||
// setup expectations
|
||||
mockRobotA.On("SayHi").Return(nil, nil)
|
||||
mockRobotB.On("SayHi").Return(nil, nil)
|
||||
|
||||
robots := []Robot{
|
||||
mockRobotA,
|
||||
mockRobotB,
|
||||
}
|
||||
|
||||
// Act
|
||||
makeRobotsSayHi(robots)
|
||||
|
||||
// Assert that the expectations were met
|
||||
mockRobotA.AssertExpectations(t)
|
||||
mockRobotB.AssertExpectations(t)
|
||||
}
|
Loading…
Reference in New Issue
Block a user