My UITest project works well with original web server, but I want to replace it with mock server using WireMock.net. I already used it in a non-UITest project successfully. Here's my code in UI Test project:
[SetUp]
public void BeforeEachTest()
{
app = AppInitializer.StartApp(platform);
}
[OneTimeSetUp]
public void InitializerOnce()
{
_mockServer = WireMockServer.Start(new WireMockServerSettings()
{
Urls = new[] { "http://localhost:12345/"},
ReadStaticMappings = true
});
_mockServer.Given(
Request.Create().WithPath("*").UsingAnyMethod())
.RespondWith(Response.Create()
.WithStatusCode(HttpStatusCode.OK).WithBody("Sample response!"));
}
[OneTimeTearDown]
public void DisposeOnce()
{
_mockServer?.Stop();
}
[Test]
public async Task Test()
{
app.Tap(c => c.Marked("MyButton"));
await Task.Delay(5000);
//Assert
Assert.IsTrue(true);
}
private WireMockServer _mockServer;
And my main Android project has this code:
<Button AutomationId="MyButton" Text="Action" Clicked="Action_OnClicked"/>
private async void Action_OnClicked(object sender, EventArgs e)
{
try
{
var client = new HttpClient();
var response = await client.GetAsync("http://10.0.2.2:12345/test");// is it a correct url???
var result = await response.Content.ReadAsStringAsync();
await UserDialogs.Instance.AlertAsync($"Status:{response.StatusCode}, result:{result}");
}
catch (Exception exception)
{
await UserDialogs.Instance.AlertAsync(exception.ToString());
}
}
And here's the result of tapping the button: