Skip to content

Instantly share code, notes, and snippets.

@Wuvist
Created October 21, 2020 13:00
Show Gist options
  • Save Wuvist/53dea3301e5d31f6e6f99b61da006cf4 to your computer and use it in GitHub Desktop.
Save Wuvist/53dea3301e5d31f6e6f99b61da006cf4 to your computer and use it in GitHub Desktop.
golang mock
package main
type base struct{}
type service struct {
sub *service
}
func (*service) create() (bool, error) {
return true, nil
}
func main() {
c := &csr{}
c.step1()
c.step2()
}
func newSerivce() *service {
return &service{}
}
type csr struct {
s *service
}
func (c *csr) step1() {
c.s = newSerivce()
}
func (c *csr) step2() error {
r, err := c.s.sub.sub.sub.sub.create()
if err != nil {
return err
}
println(r)
return nil
}
package main
type base struct{}
type service struct {
sub *service
}
func (*service) create() (bool, error) {
return true, nil
}
func main() {
c := &csr{&defaultServicer{}}
c.step1()
c.step2()
}
func newSerivce() *service {
return &service{}
}
type csrServicer interface {
init() error
create() (bool, error)
}
type defaultServicer struct {
s *service
}
func (d *defaultServicer) init() error {
d.s = newSerivce()
return nil
}
func (d *defaultServicer) create() (bool, error) {
return d.s.sub.sub.sub.sub.create()
}
type csr struct {
s csrServicer
}
func (c *csr) step1() {
c.s.init()
}
func (c *csr) step2() error {
r, err := c.s.create()
if err != nil {
return err
}
println(r)
return nil
}
package main
import "errors"
func test() {
c := &csr{&defaultServicer{}}
c.step1()
c.step2()
}
type mockServicer struct {
}
func (d *mockServicer) init() error {
return nil
}
func (d *mockServicer) create() (bool, error) {
return false, errors.New("")
}
func test2() {
c := &csr{&mockServicer{}}
c.step1()
c.step2()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment