Я пишу свою собственную библиотеку / класс, который использует стороннюю библиотеку. Я хочу написать тесты для своего собственного класса и издеваться над сторонней библиотекой. В одном из тестов я хочу убедиться, что при вызове функции из моего класса также начинает вызываться и другая функция из сторонней библиотеки. Я думаю, что FakeIt библиотека будет хорошей идеей для проверки этого.
Это пример моего кода тестирования:
#include "MyTest.h"
#include "fakeit.hpp"
using namespace fakeit;
int main() {
MyTest dt;
Mock<ExternLib> mock;
Fake(Method(mock, someFunc));
ExternLib& el = mock.get();
dt.begin();
Verify(Method(mock, someFunc));
return 0;
}
Когда это выполняется, хотя, он выдает fakeit::SequenceVerificationException
с
Expected pattern: mock.someFunc( Any arguments )
Expected matches: at least 1
Actual matches : 0
Actual sequence : total of 0 actual invocations.
Так ясно, что макет не сработал, и его метод не был вызван. Любая идея, как я могу издеваться над этим классом и проверять, что его метод вызывается?
MyTest. cpp просто простой тест и будет моей полной библиотекой / классом:
#include "MyTest.h"
MyTest::MyTest() {
_manager = new ExternLib();
}
void MyTest::begin() {
result = _manager->someFunc();
}
и его заголовочный файл:
#pragma once
#include "Externlib.h"
class MyTest {
public:
MyTest();
virtual void begin();
int result = 3;
private:
ExternLib *_manager;
};
ExternLib - фиктивная версия сторонней библиотеки. Моя реализация реализует основные потребности реального интерфейса, а функции на самом деле ничего не делают. Реализация на самом деле просто для удовлетворения операторов #include Externlib.h
.
Это мой Externlib. cpp:
#include "Externlib.h"
ExternLib:: ExternLib() {}
int ExternLib::someFunc() {
return 5;
}
и файл заголовка:
#pragma once
class ExternLib {
public:
ExternLib();
virtual int someFunc();
};