-
-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathDisposeComponentsTest.cs
More file actions
55 lines (43 loc) · 1.29 KB
/
DisposeComponentsTest.cs
File metadata and controls
55 lines (43 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.DependencyInjection;
using Xunit;
namespace Bunit.Docs.Samples;
public class DisposeComponentsTest : BunitContext
{
[Fact]
public async Task DisposeElements()
{
var calledTimes = 0;
var cut = Render<DisposableComponent>(parameters => parameters
.Add(p => p.LocationChangedCallback, url => calledTimes++)
);
await DisposeComponentsAsync();
Services.GetRequiredService<NavigationManager>().NavigateTo("newurl");
Assert.Equal(0, calledTimes);
}
[Fact]
public async Task ShouldCatchExceptionInDispose()
{
Render<ExceptionInDisposeComponent>();
await DisposeComponentsAsync();
var exception = await Renderer.UnhandledException;
Assert.IsType<NotSupportedException>(exception);
}
[Fact]
public async Task ShouldCatchExceptionInDisposeAsync()
{
Render<ExceptionInDisposeAsyncComponent>();
await DisposeComponentsAsync();
var exception = await Renderer.UnhandledException;
Assert.IsType<NotSupportedException>(exception);
}
[Fact]
public async Task ShouldDisposeJSObject()
{
JSInterop.SetupVoid("dispose").SetVoidResult();
Render<AsyncDisposableComponent>();
await DisposeComponentsAsync();
JSInterop.VerifyInvoke("dispose");
}
}