Brak możliwości zmiany wartości zmiennej statycznej w testach

0

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
2

A gdzie inkludujesz stubA.h?
EDIT: Zasadniczo zmienna statyczna w nagłówku to błąd w sztuce. Przerzuć ją do implementacji i z głowy.

0

Ten test jest źle napisany. Po kiego grzyba zmienna globalna?
To prowadzi do sytuacji niekontrolowanego sprzężenia między testami!

Na dodatek AStub wygląda podejrzanie. Nie tego bym oczekiwał od Mock-a (Stub-a).
Jako, że nic nie wiadomo o testowanym kodzie (nawet API) nie wiadomo jak to powinno wyglądać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1