Шаблон Gmock не распознается как правильный тип аргумента - PullRequest
0 голосов
/ 26 мая 2020

Я написал небольшой класс, который будет использоваться, и макет для него, а затем я решил изменить класс для создания шаблона. Однако после изменения шаблона на шаблон, макет больше не принимается в качестве аргумента.

Я создал шаблон своего макета, следуя этому источнику: https://github.com/google/googletest/blob/master/googlemock/docs/cheat_sheet.md#mocking -a-class-template-mocktemplate Это выглядит так:

template <class K, class V>
class MockClient : public Client<K, V> {
 public:
  explicit MockClient() : Client<K, V>() {}

  MOCK_METHOD1_T(..., void(const Config& config));
};

Затем макет передается как аргумент для создания объекта. Я получаю сообщение об этом примерно так:

candidate constructor not viable: no known conversion from 'unique_ptr<MockClient<long, Metadata>, default_delete<MockClient<long, ModelMetadata>>>' to 'unique_ptr<Client<long, Metadata>, default_delete<Client<long,ModelMetadata>>>' for 1st argument

Так что мне кажется, что он не принимает gmock как тот же объект, что и раньше, и как он должен?

Я подозреваю что в моем макетном конструкторе чего-то не хватает, но я не могу найти лучшего источника шаблонных макетов, который включает в себя, как сделать конструктор. Кто-нибудь знает об этом?

...