Hej, mam problem taki jak w temacie, wygląda na to, że mam dwie osobne instancje zmiennej statycznej, jedna w testach, druga w stubie i nie wiem kompletnie jak to możliwe,.
Zamieszczam uproszczony kod:
stubA.h
#ifndef ASTUB_H_
#define ASTUB_H_
#include <map>
#include "path/A.h"
namespace aspace
{
typedef enum
{
DOOR_STATE 0;
WINDOW_STATE 1
}state;
static std::map<state, bool> houseState;
}
class AStub : public A
{
...
Astub();
bool isDoorOpen();
...
}
#endif
stubA.cc
using namespace aspace;
#include "path/stubA.h"
...
AStub::Astub()
{
houseState.insert(std::pair<state, bool>(DOOR_STATE, false);
houseState.insert(std::pair<state, bool>(WINDOW_STATE, false);
}
bool AStub::isDoorOpen()
{
std::cout << "Inside stub isDoorOpen() = %d << houseState[DOOR_STATE] << "\n";
std::cout << "House state adr inside stub = %d << &houseState << "\n";
return houseState[DOOR_STATE];
}
tests.cpp
TEST_F(BTests, test1)
{
aspace::houseState[aspace::state::DOOR_STATE] = true;
std::cout << "Inside test1 = %d << apace::houseState[aspace::state::DOOR_STATE] << "\n";
std::cout << "House state adr inside test1 = %d << &aspace::houseState << "\n";
...
funckja, która wywołuje AStub::isDoorOpen()
...
}
Rezultat:
Inside test1 = 1
House state adr inside test1 = 320
Inside stub isDoorOpen() 0
House state adr inside stub = 380