Skip to content

Commit 3511d78

Browse files
committed
fix: 修正单元测试
1 parent 2fd4c81 commit 3511d78

File tree

2 files changed

+54
-32
lines changed

2 files changed

+54
-32
lines changed

test/Cuture.AspNetCore.ActionAuditing.Test/AsyncAuditDataStorageTest.cs

Lines changed: 47 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,56 @@ public class AsyncAuditDataStorageTest
1717
/// </summary>
1818
public class TestAsyncAuditDataStorage : AsyncAuditDataStorage<string>
1919
{
20+
#region Public 构造函数
21+
2022
public TestAsyncAuditDataStorage(ILogger<AsyncAuditDataStorage<string>> logger) : base(logger)
2123
{
2224
}
2325

24-
protected override ValueTask<string> CreateDataAsync(ActionAuditingExecutingContext context, CancellationToken cancellationToken)
25-
{
26-
return ValueTask.FromResult("testData");
27-
}
26+
#endregion Public 构造函数
27+
28+
#region Protected Internal 方法
2829

2930
protected internal override Task SaveDataAsync(string data, CancellationToken cancellationToken)
3031
{
3132
return Task.CompletedTask;
3233
}
34+
35+
#endregion Protected Internal 方法
36+
37+
#region Protected 方法
38+
39+
protected override ValueTask<string> CreateDataAsync(ActionAuditingExecutingContext context, CancellationToken cancellationToken)
40+
{
41+
return ValueTask.FromResult("testData");
42+
}
43+
44+
#endregion Protected 方法
3345
}
3446

35-
#endregion
47+
#endregion 测试辅助类
3648

3749
#region 测试方法
3850

51+
/// <summary>
52+
/// 测试AddAsync方法是否正确写入数据到通道
53+
/// </summary>
54+
[TestMethod]
55+
public async Task AddAsync_ShouldWriteToChannel()
56+
{
57+
// Arrange
58+
var mockLogger = new Mock<ILogger<AsyncAuditDataStorage<string>>>();
59+
var storage = new TestAsyncAuditDataStorage(mockLogger.Object);
60+
var mockContext = new Mock<ActionAuditingExecutingContext>(null, null, null, null);
61+
62+
// Act
63+
await storage.AddAsync(mockContext.Object, CancellationToken.None);
64+
65+
// Assert
66+
var result = await storage.DataChannel.Reader.ReadAsync();
67+
Assert.AreEqual("testData", result);
68+
}
69+
3970
/// <summary>
4071
/// 测试构造函数是否正确初始化
4172
/// </summary>
@@ -54,36 +85,35 @@ public void Constructor_ShouldInitializeCorrectly()
5485
}
5586

5687
/// <summary>
57-
/// 测试AddAsync方法是否正确写入数据到通道
88+
/// 测试Dispose方法是否取消运行令牌
5889
/// </summary>
5990
[TestMethod]
60-
public async Task AddAsync_ShouldWriteToChannel()
91+
public void Dispose_ShouldCancelRunningToken()
6192
{
6293
// Arrange
6394
var mockLogger = new Mock<ILogger<AsyncAuditDataStorage<string>>>();
6495
var storage = new TestAsyncAuditDataStorage(mockLogger.Object);
65-
var mockContext = new Mock<ActionAuditingExecutingContext>(null, null, null, null);
6696

6797
// Act
68-
await storage.AddAsync(mockContext.Object, CancellationToken.None);
98+
storage.Dispose();
6999

70100
// Assert
71-
var result = await storage.DataChannel.Reader.ReadAsync();
72-
Assert.AreEqual("testData", result);
101+
Assert.IsTrue(storage.RunningCancellationToken.IsCancellationRequested);
73102
}
74103

75104
/// <summary>
76-
/// 测试Dispose方法是否取消运行令牌
105+
/// 测试Dispose方法是否处理多次调用
77106
/// </summary>
78107
[TestMethod]
79-
public void Dispose_ShouldCancelRunningToken()
108+
public void Dispose_ShouldHandleMultipleCalls()
80109
{
81110
// Arrange
82111
var mockLogger = new Mock<ILogger<AsyncAuditDataStorage<string>>>();
83112
var storage = new TestAsyncAuditDataStorage(mockLogger.Object);
84113

85114
// Act
86115
storage.Dispose();
116+
storage.Dispose(); // 第二次调用
87117

88118
// Assert
89119
Assert.IsTrue(storage.RunningCancellationToken.IsCancellationRequested);
@@ -97,6 +127,9 @@ public async Task RunSaveLoopAsync_ShouldLogError_WhenSaveFails()
97127
{
98128
// Arrange
99129
var mockLogger = new Mock<ILogger<AsyncAuditDataStorage<string>>>();
130+
mockLogger.Setup(x => x.IsEnabled(LogLevel.Warning))
131+
.Returns(true);
132+
100133
var storage = new Mock<TestAsyncAuditDataStorage>(mockLogger.Object) { CallBase = true };
101134
storage.Setup(x => x.SaveDataAsync(It.IsAny<string>(), It.IsAny<CancellationToken>()))
102135
.ThrowsAsync(new Exception("Test exception"));
@@ -141,23 +174,5 @@ public async Task RunSaveLoopAsync_ShouldLogWarning_WhenCancelled()
141174
Times.AtLeastOnce);
142175
}
143176

144-
/// <summary>
145-
/// 测试Dispose方法是否处理多次调用
146-
/// </summary>
147-
[TestMethod]
148-
public void Dispose_ShouldHandleMultipleCalls()
149-
{
150-
// Arrange
151-
var mockLogger = new Mock<ILogger<AsyncAuditDataStorage<string>>>();
152-
var storage = new TestAsyncAuditDataStorage(mockLogger.Object);
153-
154-
// Act
155-
storage.Dispose();
156-
storage.Dispose(); // 第二次调用
157-
158-
// Assert
159-
Assert.IsTrue(storage.RunningCancellationToken.IsCancellationRequested);
160-
}
161-
162-
#endregion
177+
#endregion 测试方法
163178
}

test/Cuture.AspNetCore.ActionAuditing.Test/DefaultActionAuditingFilterTest.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ public async Task Should_Return_True_When_HasPermissionProvider()
6464
Assert.IsTrue(result);
6565
}
6666

67+
[TestInitialize]
68+
public void TestInitialize()
69+
{
70+
_loggerMock.Setup(x => x.IsEnabled(LogLevel.Warning))
71+
.Returns(true);
72+
}
73+
6774
#endregion Public 方法
6875

6976
#region Private 方法

0 commit comments

Comments
 (0)