Как мокнуть функцию AddVector этом примере. Помогите ПЛЗ.

Jacob

Новичок
Пользователь
Ноя 29, 2023
4
0
1
Код:
type VectorService interface {
    AddVector() [2]int
}

type InitService struct{
         x    int
         y    int
}

type MyService struct {
    VService VectorService
}

func (sms InitService) AddVector() [2]int {
    var b [2]int
    b[0] = sms.x + 100
    b[1] = sms.y + 200
    return b
}

func (a MyService) ChargeVector(x int, y int) [2]int {
    r := a.VService.AddVector()
    var b [2]int
    b[0] = r[0] + 10
    b[1] = r[1] + 22
    return b
}

func main() {
    myService := MyService{InitService{1,2}}
    a := myService.ChargeVector(100, 200)
    fmt.Printf("Charging Customer For the value of %d  %d\n", a[0], a[1])
}
 

Jacob

Новичок
Пользователь
Ноя 29, 2023
4
0
1
Тесты прошли как теперь передать из структуры InitServiceMock X и Y ведь там стоит mock.Mock



Код:
   type InitServiceMock struct {
          mock.Mock
   }

   func (sms *InitServiceMock) AddToVector() [2]int {
    fmt.Println("Mocked charge notification function")
    fmt.Printf("Charging Customer For the value of -- %d --  %d -- \n", 100, 200)
 

    var b [2]int
     b[0] = 100
    b[1] = 200

    return  b
   }

    func TestChargeCustomer(t *testing.T) {

       var b [2]int
       b[0] = 101
      b[1] = 202
 
    smsService := new(InitServiceMock)
       smsService.On("AddToVector").Return(b)
 
     myService := test.MyService{test.InitService{1,2}}
    a := myService.ChargeVector(100,200)

    assert.Equal(t, a[0], 111, "One")
    assert.Equal(t, a[1], 224, "Two")
 
    fmt.Printf("Charging Customer For the value of %d  %d\n", a[0], a[1])
   }
 

Jacob

Новичок
Пользователь
Ноя 29, 2023
4
0
1
Задача решена. Спасибо.
 

Форум IT Специалистов