Skip to content

Commit 6d57f19

Browse files
authored
TestServiceProvider now explictly implements IServiceCOlelction (#40)
* TestServiceProvider now explictly implements IServiceCOlelction * Tweaks to namespaces
1 parent 7721421 commit 6d57f19

13 files changed

Lines changed: 218 additions & 150 deletions

File tree

sample/tests/RazorTestComponents/Pages/FetchDataTest.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
void Setup()
2525
{
26-
Services.AddService<IWeatherForecastService>(forecastService);
26+
Services.AddSingleton<IWeatherForecastService>(forecastService);
2727
}
2828

2929
void InitialLoadingHtmlRendersCorrectly()

sample/tests/Tests/Pages/FetchDataTest.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using Xunit;
99
using Egil.RazorComponents.Testing.SampleApp.Pages;
1010
using Shouldly;
11+
using Microsoft.Extensions.DependencyInjection;
1112

1213
namespace Egil.RazorComponents.Testing.SampleApp.CodeOnlyTests
1314
{
@@ -17,7 +18,7 @@ public class FetchDataTest : ComponentTestFixture
1718
public void Test001()
1819
{
1920
// Arrange - add the mock forecast service
20-
Services.AddService<IWeatherForecastService, MockForecastService>();
21+
Services.AddSingleton<IWeatherForecastService, MockForecastService>();
2122

2223
// Act - render the FetchData component
2324
var cut = RenderComponent<FetchData>();
@@ -35,7 +36,7 @@ public void Test002()
3536
// Setup the mock forecast service
3637
var forecasts = new[] { new WeatherForecast { Date = DateTime.Now, Summary = "Testy", TemperatureC = 42 } };
3738
var mockForecastService = new MockForecastService();
38-
Services.AddService<IWeatherForecastService>(mockForecastService);
39+
Services.AddSingleton<IWeatherForecastService>(mockForecastService);
3940

4041
// Arrange - render the FetchData component
4142
var cut = RenderComponent<FetchData>();

sample/tests/Tests/Pages/TodosTest.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using Egil.RazorComponents.Testing.SampleApp.Data;
1111
using Egil.RazorComponents.Testing.EventDispatchExtensions;
1212
using Egil.RazorComponents.Testing.SampleApp.Pages;
13+
using Microsoft.Extensions.DependencyInjection;
1314

1415
namespace Egil.RazorComponents.Testing.SampleApp.CodeOnlyTests.Pages
1516
{
@@ -30,7 +31,7 @@ public void Test001()
3031
var getTask = new TaskCompletionSource<IReadOnlyList<Todo>>();
3132
var todoSrv = new Mock<ITodoService>();
3233
todoSrv.Setup(x => x.GetAll()).Returns(getTask.Task);
33-
Services.AddService(todoSrv.Object);
34+
Services.AddSingleton(todoSrv.Object);
3435

3536
// act
3637
var page = RenderComponent<Todos>();
@@ -51,7 +52,7 @@ public void Test002()
5152
var todos = new[] { new Todo { Id = 1, Text = "First" } };
5253
var todoSrv = new Mock<ITodoService>();
5354
todoSrv.Setup(x => x.GetAll()).Returns(Task.FromResult<IReadOnlyList<Todo>>(todos));
54-
Services.AddService(todoSrv.Object);
55+
Services.AddSingleton(todoSrv.Object);
5556

5657
// act
5758
var page = RenderComponent<Todos>();
@@ -66,7 +67,7 @@ public void Test003()
6667
{
6768
// arrange
6869
var todoSrv = new Mock<ITodoService>();
69-
Services.AddService(todoSrv.Object);
70+
Services.AddSingleton(todoSrv.Object);
7071
var page = RenderComponent<Todos>();
7172

7273
// act

sample/tests/_Imports.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
@using Microsoft.AspNetCore.Components.Web
2+
@using Microsoft.Extensions.DependencyInjection
23

34
@using Egil.RazorComponents.Testing
45
@using Egil.RazorComponents.Testing.EventDispatchExtensions
56
@using Egil.RazorComponents.Testing.Mocking.JSInterop
67
@using Egil.RazorComponents.Testing.Asserting
7-
@using Egil.RazorComponents.Testing.Mocking.JSInterop
88

99
@using Egil.RazorComponents.Testing.SampleApp
1010
@using Egil.RazorComponents.Testing.SampleApp.Data
1111
@using Egil.RazorComponents.Testing.SampleApp.Components
1212
@using Egil.RazorComponents.Testing.SampleApp.Pages
1313

14-
1514
@using Xunit
1615
@using Shouldly

src/Mocking/MockHttpExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Text.Json;
77
using System.Net.Http.Headers;
88
using System.Diagnostics.CodeAnalysis;
9+
using Microsoft.Extensions.DependencyInjection;
910

1011
namespace Egil.RazorComponents.Testing
1112
{
@@ -27,7 +28,7 @@ public static MockHttpMessageHandler AddMockHttp(this TestServiceProvider servic
2728
var mockHttp = new MockHttpMessageHandler();
2829
var httpClient = mockHttp.ToHttpClient();
2930
httpClient.BaseAddress = new Uri("http://example.com");
30-
serviceProvider.AddService(httpClient);
31+
serviceProvider.AddSingleton(httpClient);
3132
return mockHttp;
3233
}
3334

src/Mocking/MockJsRuntimeExtensions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using Egil.RazorComponents.Testing.Mocking.JSInterop;
3+
using Microsoft.Extensions.DependencyInjection;
34

45
namespace Egil.RazorComponents.Testing
56
{
@@ -18,7 +19,7 @@ public static MockJsRuntimeInvokeHandler AddMockJsRuntime(this TestServiceProvid
1819

1920
var result = new MockJsRuntimeInvokeHandler(mode);
2021

21-
serviceProvider.AddService(result.ToJsRuntime());
22+
serviceProvider.AddSingleton(result.ToJsRuntime());
2223

2324
return result;
2425
}

src/TestContext.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
using AngleSharp.Dom;
22
using Egil.RazorComponents.Testing.Diffing;
3+
using Egil.RazorComponents.Testing.Mocking.JSInterop;
34
using Microsoft.AspNetCore.Components;
45
using Microsoft.AspNetCore.Components.RenderTree;
56
using Microsoft.Extensions.DependencyInjection;
67
using Microsoft.Extensions.Logging;
78
using Microsoft.Extensions.Logging.Abstractions;
9+
using Microsoft.JSInterop;
810
using System;
911
using System.Diagnostics.CodeAnalysis;
1012
using System.Linq;
@@ -32,9 +34,11 @@ public class TestContext : ITestContext, IDisposable
3234
/// </summary>
3335
public TestContext()
3436
{
37+
Services.AddSingleton<IJSRuntime>(new PlaceholderJsRuntime());
38+
3539
_renderer = new Lazy<TestRenderer>(() =>
3640
{
37-
var loggerFactory = Services.GetService<ILoggerFactory>() ?? new NullLoggerFactory();
41+
var loggerFactory = Services.GetService<ILoggerFactory>() ?? NullLoggerFactory.Instance;
3842
return new TestRenderer(Services, loggerFactory);
3943
});
4044
_htmlParser = new Lazy<TestHtmlParser>(() =>

0 commit comments

Comments
 (0)