Насмешка через натяжку / свидетельство, разные обратные аргументы - PullRequest
0 голосов
/ 29 марта 2020

Функция ниже описывает, как издеваться, используя testify. args.Bool(0), args.Error(1) являются поддельными возвращаемыми значениями.

func (m *MyMockedObject) DoSomething(number int) (bool, error) {

  args := m.Called(number)
  return args.Bool(0), args.Error(1)

}

Возможно ли вернуть что-либо кроме args.Int(), args.Bool(), args.String()? Что делать, если мне нужно вернуть int64 или пользовательский struct. Есть метод или я что-то упустил?

Например:

func (m *someMock) doStuff(p *sql.DB, id int) (res int64, err error)

1 Ответ

1 голос
/ 30 марта 2020

Да, это возможно с помощью args.Get и введите утверждение.

Из документов :

// For objects of your own type, use the generic Arguments.Get(index) method and make a type assertion:
//
//     return args.Get(0).(*MyObject), args.Get(1).(*AnotherObjectOfMine)

Итак, ваш пример будет:

func (m *someMock) doStuff(p *sql.DB, id int) (res int64, err error) {
    args := m.Called(number)
    return args.Get(0).(int64), args.Error(1)
}

Дополнительно, если возвращаемое значение является указателем (например, указатель на структуру), вы должны проверить, равен ли он нулю, прежде чем выполнять утверждение типа.

...