diff --git a/src/BootstrapBlazor/Components/Rate/Rate.razor.cs b/src/BootstrapBlazor/Components/Rate/Rate.razor.cs
index 5fe375f8ba374a4c05369465e148aad50596cf4e..03823582fd015decbd1c00f81a091014ff253a62 100644
--- a/src/BootstrapBlazor/Components/Rate/Rate.razor.cs
+++ b/src/BootstrapBlazor/Components/Rate/Rate.razor.cs
@@ -92,11 +92,13 @@ public partial class Rate : IDisposable
///
protected virtual void Dispose(bool disposing)
{
-
- if (disposing && Interop != null)
+ if (disposing)
{
- Interop.Dispose();
- Interop = null;
+ if (Interop != null)
+ {
+ Interop.Dispose();
+ Interop = null;
+ }
}
}
diff --git a/test/UnitTest/Components/RateTest.cs b/test/UnitTest/Components/RateTest.cs
new file mode 100644
index 0000000000000000000000000000000000000000..11262a6c0a3662781aa052d373435f479f3f8eff
--- /dev/null
+++ b/test/UnitTest/Components/RateTest.cs
@@ -0,0 +1,63 @@
+// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
+// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
+// Website: https://www.blazor.zone or https://argozhang.github.io/
+
+namespace UnitTest.Components;
+
+public class RateTest : BootstrapBlazorTestBase
+{
+ [Fact]
+ public void Value_Ok()
+ {
+ var cut = Context.RenderComponent(builder => builder.Add(s => s.Value, 5));
+ cut.Contains("rate");
+ }
+
+ [Fact]
+ public void IsDisable_Ok()
+ {
+ var cut = Context.RenderComponent(builder =>
+ {
+ builder.Add(s => s.IsDisable, true);
+ builder.Add(s => s.Value, 5);
+ });
+
+ var ele = cut.Find(".disabled");
+ Assert.NotNull(ele);
+ }
+
+ [Fact]
+ public async Task ValueChanged_Ok()
+ {
+ var ret = false;
+ var cut = Context.RenderComponent(builder =>
+ {
+ builder.Add(s => s.Value, 3);
+ builder.Add(s => s.ValueChanged, EventCallback.Factory.Create(this, v =>
+ {
+ ret = true;
+ }));
+ });
+
+ await cut.Instance.Clicked(1);
+ Assert.True(ret);
+ }
+
+ [Fact]
+ public async Task OnValueChanged_Ok()
+ {
+ var ret = false;
+ var cut = Context.RenderComponent(builder =>
+ {
+ builder.Add(s => s.OnValueChanged, new Func(v =>
+ {
+ ret = true;
+ return Task.CompletedTask;
+ }));
+ builder.Add(s => s.Value, 5);
+ });
+
+ await cut.Instance.Clicked(1);
+ Assert.True(ret);
+ }
+}