public class MockProxySubject : ISubject {
public MockProxySubject() { }
public void Request4() {
}
}
[TestFixture]
public class ProxyFactoryTests {
private ISubject proxy = new MockProxySubject();
public ProxyFactoryTests() { }
[SetUp]
public void SetUp() {
ProxyFactory.Instance.Reset();
}
[Test]
public void RealProxyIsDefault() {
Assert.AreEqual(typeof(ProxySubject), ProxyFactory.Instance.SubjectProxy.GetType());
}
[Test]
public void ProxyReplacedAndReturned() {
Assert.AreEqual(typeof(ProxySubject), ProxyFactory.Instance.SubjectProxy.GetType());
ProxyFactory.Instance.ReplaceProxy(typeof(ISubject), new MockProxySubject());
Assert.AreEqual(typeof(MockProxySubject), ProxyFactory.Instance.SubjectProxy.GetType());
ProxyFactory.Instance.Reset();
Assert.AreEqual(typeof(ProxySubject), ProxyFactory.Instance.SubjectProxy.GetType());
}
}
[TestFixture]
public class ProxySubjectTests {
private ISubject proxySubject = new ProxySubject();
public ProxySubjectTests() { }
[Test]
public void RealProxyCallsRealSubjectWithoutThrowingAnException() {
proxySubject.Request();
}
}
[TestFixture]
public class RealSubjectTests {
private RealSubject realSubject = new RealSubject();
public RealSubjectTests() { }
[Test]
public void RealSubjectDoesWhatIsExpectedWithinTheRequestMethod() {
realSubject.Request();
}
}
[TestFixture]
public class ClientTests {
private Client client = new Client();
public ClientTests() { }
[SetUp]
public void SetUp() {
ProxyFactory.Instance.ReplaceProxy(typeof(ISubject), new MockProxySubject());
}
[Test]
public void TestOfMethodThatMakesProxyCall() {
client.MethodThatMakesProxyRequest();
}
}