mirror of
https://github.com/crazybber/awesome-patterns.git
synced 2024-11-25 22:36:05 +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