You could inject your dependencies. There is a funny talk by Liron Levin
[1] which helped me a lot.

1: https://youtu.be/_B_vCEiO4mA

prakash sharma <prakashsharmac...@gmail.com> schrieb am Sa. 11. Jan. 2020
um 16:24:

> Need help:
>
> https://stackoverflow.com/questions/59693971/mocked-method-not-working-in-golang-while-running-the-test-cases
>
> I am trying to mock an struct method in test cases but it is not working.
> I want to mock *Validate* method here:
>
> package main
>
> import (
>     "fmt"
> )
>
> type DemoInterface interface {
>     Inc(int) (int, error)
>     Validate(int) error
> }
> type DemoStruct struct{}
>
> func (l DemoStruct) Inc(num int) (int, error) {
>     err := l.Validate(num)
>     if err != nil {
>         return 0, err
>     }
>     num = num + 100
>     return num, nil
>
> }
> func (l DemoStruct) Validate(num int) error {// SOME DB LOGIC IS HERE WHICH I 
> CAN NOT POST at Stackoverflow
>     if num > 100 {
>         return fmt.Errorf("INVALID NUM %v", num)
>     }
>     return nil
> }
>
> func main() {
>     s, err := DemoStruct{}.Inc(10)
>     if err != nil {
>         fmt.Println(err)
>     }
>     fmt.Println(s)
>
> }
>
>
>
> My test cases:
>
> package main
>
> import (
>     "fmt"
>     "testing"
> )
>
> const (
>     SUCCESS = "SUCCESS"
>     ERROR   = "ERROR"
> )
>
> type MockDemoStruct struct {
>     DemoStruct
>     functionality string
> }
>
> func (m MockDemoStruct) Validate(num int) error {
>     switch m.functionality {
>     case SUCCESS:
>         return nil
>     case ERROR:
>         fmt.Errorf("MOCK ERROR %v", num)
>
>     }
>     return fmt.Errorf("MOCK ERROR %v", num)
> }
>
> func TestPath(t *testing.T) {
>
>     t.Run("ERROR", func(t *testing.T) {
>         ls := MockDemoStruct{DemoStruct{}, SUCCESS}
>         res, err := ls.Inc(110)
>         expected := fmt.Errorf("MOCK ERROR %v", 10)
>         if err != expected {
>             t.Errorf("NOT MATCH  %v  %v", err, expected)
>             //-----------------NOT MATCH  INVALID NUM 110  MOCK ERROR 10 
> ERROR-----------------------------
>
>         }
>         fmt.Println(res)
>     })
> }
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/golang-nuts/a90f9eee-cebb-4d2d-b1cf-76b16faee296%40googlegroups.com
> <https://groups.google.com/d/msgid/golang-nuts/a90f9eee-cebb-4d2d-b1cf-76b16faee296%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CALWqRZqfjL0-5ZaSJOywLFaJoebmvh7Mfb%2BsnpGpEE1M6Aj%3D7g%40mail.gmail.com.

Reply via email to