C# AWS CreateBatchWrite单元测试
我正试图围绕AWS DynamoDb C#库CreateBatchWrite编写一些单元测试 方法如下:C# AWS CreateBatchWrite单元测试,c#,.net,unit-testing,amazon-dynamodb,aws-sdk,C#,.net,Unit Testing,Amazon Dynamodb,Aws Sdk,我正试图围绕AWS DynamoDb C#库CreateBatchWrite编写一些单元测试 方法如下: public void BatchSave<T>(string tableName, List<T> items) { if (string.IsNullOrWhiteSpace(tableName)) { throw new ArgumentNullException(nameof(tableName)); } if
public void BatchSave<T>(string tableName, List<T> items)
{
if (string.IsNullOrWhiteSpace(tableName))
{
throw new ArgumentNullException(nameof(tableName));
}
if (items == null)
{
throw new ArgumentNullException(nameof(items));
}
items.RemoveAll(x => x == null);
BatchWrite<T> batch = _dynamoDbContext.CreateBatchWrite<T>(
new DynamoDBOperationConfig()
{
OverrideTableName = tableName
});
batch.AddPutItems(items);
batch.Execute();
}
public void BatchSave(字符串tableName,列表项)
{
if(string.IsNullOrWhiteSpace(tableName))
{
抛出新ArgumentNullException(nameof(tableName));
}
if(items==null)
{
抛出新的ArgumentNullException(nameof(items));
}
RemoveAll(x=>x==null);
BatchWrite batch=\u dynamoDbContext.CreateBatchWrite(
新的dynamodboOperationConfig()
{
OverrideTableName=表名
});
批次.添加PutItems(项目);
batch.Execute();
}
- 我想测试的是我的先决条件
- _dynamoDbContext被注入,它是一个接口(IDynamoDBContext)
除了将我的先决条件移到下面或上面一层之外,还有什么方法可以对其进行单元测试吗?我的方法正确吗?如果您只想测试先决条件,那么就创建一个被测试类的实例,传递将导致预期行为的参数,并断言它按预期发生 如果测试不需要执行到完成,甚至不需要模拟依赖项 比如说
[TestClass]
public class AwsTests {
[Test]
public void Should_Throw_For_Null_TableName() {
//Arrange
var subject = new SubjectUnderTest(null);
ArgumentNullException exception = null;
var expected = "tableName";
//Act
try {
subject.BatchSave<object>(null, null);
} catch (ArgumentNullException e) {
exception = e;
}
//Assert
exception.Should().NotBeNull();
exception.ParamName.Should().Be(expected);
}
[Test]
public void Should_Throw_For_Null_Items() {
//Arrange
var subject = new SubjectUnderTest(null);
ArgumentNullException exception = null;
var expected = "items";
//Act
try {
subject.BatchSave<object>("fakeTableName", null);
} catch (ArgumentNullException e) {
exception = e;
}
//Assert
exception.Should().NotBeNull();
exception.ParamName.Should().Be(expected);
}
}
[TestClass]
公开课{
[测试]
public void应该为Null抛出TableName(){
//安排
var subject=新SubjectUnderTest(空);
ArgumentNullException异常=null;
var expected=“tableName”;
//表演
试一试{
subject.BatchSave(null,null);
}捕获(e){
例外=e;
}
//断言
异常.Should().NotBeNull();
异常.ParamName.Should().Be(应为);
}
[测试]
public void应为空项()抛出{
//安排
var subject=新SubjectUnderTest(空);
ArgumentNullException异常=null;
var expected=“items”;
//表演
试一试{
subject.BatchSave(“fakeTableName”,null);
}捕获(e){
例外=e;
}
//断言
异常.Should().NotBeNull();
异常.ParamName.Should().Be(应为);
}
}
上述测试将方法的两个
if
条件作为隔离单元测试进行测试,只提供安全执行测试到完成所需的条件。显示您迄今为止如何在一个测试中测试它,如果您只想测试先决条件,则创建测试中类的实例,并传递将导致预期的行为并断言它发生了