75 lines
1.1 KiB
Go
75 lines
1.1 KiB
Go
package bean
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestMock(t *testing.T) {
|
|
type MockSubSubObject struct {
|
|
A int `mock:"20"`
|
|
}
|
|
type MockSubObjectAnoy struct {
|
|
Anoy int `mock:"20"`
|
|
}
|
|
type MockSubObject struct {
|
|
A bool `mock:"true"`
|
|
B MockSubSubObject
|
|
}
|
|
type MockObject struct {
|
|
A string `mock:"aaaaa"`
|
|
B int8 `mock:"10"`
|
|
C []*MockSubObject `mock:"length:2"`
|
|
D bool `mock:"true"`
|
|
E *MockSubObject
|
|
F []int `mock:"length:3"`
|
|
G InterfaceA
|
|
H InterfaceA
|
|
MockSubObjectAnoy
|
|
}
|
|
m := &MockObject{G: &ImplA{}}
|
|
err := Mock(m)
|
|
if err != nil {
|
|
t.Fatalf("mock failed: %v", err)
|
|
}
|
|
if m.A != "aaaaa" || m.B != 10 || m.C[1].B.A != 20 ||
|
|
!m.E.A || m.E.B.A != 20 || !m.D || len(m.F) != 3 {
|
|
t.Fail()
|
|
}
|
|
_, ok := m.G.(*ImplA)
|
|
if !ok {
|
|
t.Fail()
|
|
}
|
|
_, ok = m.G.(*ImplB)
|
|
if ok {
|
|
t.Fail()
|
|
}
|
|
_, ok = m.H.(*ImplA)
|
|
if ok {
|
|
t.Fail()
|
|
}
|
|
if m.Anoy != 20 {
|
|
t.Fail()
|
|
}
|
|
}
|
|
|
|
type InterfaceA interface {
|
|
Item()
|
|
}
|
|
|
|
type ImplA struct {
|
|
A string `mock:"aaa"`
|
|
}
|
|
|
|
func (i *ImplA) Item() {
|
|
fmt.Println("implA")
|
|
}
|
|
|
|
type ImplB struct {
|
|
B string `mock:"bbb"`
|
|
}
|
|
|
|
func (i *ImplB) Item() {
|
|
fmt.Println("implB")
|
|
}
|