FakeItEasy fake 개체로 메서드를 테스트하고 있습니다. 가짜 개체는 MemoryStream입니다.FakeItEasy 설치 개체가 테스트 메서드에서 반환되지 않습니다.
[TestFixture]
public class ServerClientTests
{
private IWebClient webClient;
private ServerClient serverClient;
[SetUp]
public void Setup()
{
webClient = A.Fake<IWebClient>();
serverClient = new ServerClient(webClient);
var responseStreamBytes = Encoding.Default.GetBytes("OK");
var responseStream = new MemoryStream();
responseStream.Write(responseStreamBytes, 0, responseStreamBytes.Length);
responseStream.Seek(0, SeekOrigin.Begin);
var response = A.Fake<WebResponse>();
A.CallTo(() => response.GetResponseStream()).Returns(responseStream);
var request = A.Fake<WebRequest>();
A.CallTo(() => request.GetResponse()).Returns(response);
A.CallTo(() => webClient.GetRequest("http://localhost:8080/myserver")).Returns(request);
}
[Test]
public void Test1()
{
var result = serverClient.GetRequest("http://localhost/myserver");
Assert.AreEqual(2, result.Length);
}
}
그리고 이것은 테스트중인 코드입니다 : 내가 테스트를 실행하면
public interface IWebClient
{
WebRequest GetRequest(string url);
}
public class ServerClient
{
private readonly IWebClient client;
public ServerClient(IWebClient client)
{
this.client = client;
}
public Stream GetRequest(string url)
{
return client.GetRequest(url).GetResponse().GetResponseStream();
}
}
, 그것은 제공 테스트 예외 =>예상 : 2 그러나이었다 : 0
내가 브레이크 포인트를 넣어 설정 방법 및 디버그 테스트에서 가짜 요청 GetResponse() 메소드가 스트림과 함께 응답을 리턴하는 것을 볼 수 있습니다. 그 길이 스트림 길이는
0이 FakeItEasy에 대한 설정이 있습니다,
그러나 시험 방법 2.입니까? 또는 나는 어디에서 틀린가? webClient
이를 반환 있도록
이해가 안을 말한 것입니다. 문서를 원한다면 [FakeItYasy 홈페이지] (http://fakeiteasy.github.io/)에서 링크 된 https://github.com/FakeItEasy/FakeItEasy/wiki에서 문서를 찾을 수 있습니다. –