public class RealLogger
{
public int id;
public RealLogger()
: this(-1)
{
}
public RealLogger(int id)
{
this.id = id;
}
}
[TestMethod]
[Isolated]
public void FutureInstance_VerifyMethodWasCalledAndStubbed()
{
var fake = Isolate.Fake.Instance<RealLogger>();
Isolate.Swap.NextInstance<RealLogger>().With(fake);
var real = new RealLogger(77);
Trace.TraceInformation("1: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
fake = Isolate.Fake.Instance<RealLogger>();
Isolate.Swap.NextInstance<RealLogger>().With(fake);
fake.id = 8;
real = new RealLogger(77);
Trace.TraceInformation("2: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
fake = Isolate.Fake.Instance<RealLogger>(Members.CallOriginal);
Isolate.Swap.NextInstance<RealLogger>().With(fake);
real = new RealLogger(77);
Trace.TraceInformation("3: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
fake = Isolate.Fake.Instance<RealLogger>(Members.CallOriginal);
Isolate.Swap.NextInstance<RealLogger>().With(fake);
fake.id = 8;
real = new RealLogger(77);
Trace.TraceInformation("4: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
fake = Isolate.Fake.Instance<RealLogger>(Members.CallOriginal, ConstructorWillBe.Called, 3);
Isolate.Swap.NextInstance<RealLogger>().With(fake);
real = new RealLogger(77);
Trace.TraceInformation("5: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
fake = Isolate.Fake.Instance<RealLogger>(Members.CallOriginal, ConstructorWillBe.Called, 3);
Isolate.Swap.NextInstance<RealLogger>().With(fake);
fake.id = 8;
real = new RealLogger(77);
Trace.TraceInformation("6: fake.id={0}, real.id={1}", fake.id, real.id);
Isolate.CleanUp();
}
Output:
QTAgent32.exe Information: 0 : 1: fake.id=0, real.id=0
QTAgent32.exe Information: 0 : 2: fake.id=8, real.id=0
QTAgent32.exe Information: 0 : 3: fake.id=-1, real.id=77
QTAgent32.exe Information: 0 : 4: fake.id=8, real.id=77
QTAgent32.exe Information: 0 : 5: fake.id=3, real.id=77
QTAgent32.exe Information: 0 : 6: fake.id=8, real.id=77
Who can explain this?
What I'm doing wrong?
Thanks a lot.