如何创建一个测试来检查记录是否已存在于数据库中
How to create a test that checks whether the record already exists in the database
我正在使用 xUnit 为需要查询数据库以验证记录是否已存在的方法创建单元测试。在我的测试中,我使用 NSubstitute Mock
我的存储库。
因此:
public class MyTestClass
{
public MyTestClass()
{
myRepository = Substitute.For<IMyRepository>();
}
[Fact]
public void My_Test()
{
var myService = new MyService(myRepository);
var result = myService.Create(mockObject);
....
}
这是我引用的服务的实现:
public class MyService
{
public MyService(IMyRepository repository)
{
_repository = repository
}
IMyRepository _repository;
public X Create(MyObject mockObject)
{
var result = _repository.CheckIfExists(mockObject.Name); //This return an NAME for example;
if (result == mockObject.Name)
{
return X.Error("Message...")
}
}
}
问题是:
我如何测试我的服务的 if (result == mockObject.Name)
,因为我的存储库是假的?我在测试 class.
上需要这条消息 return X.Error("Message...")
如何测试这段代码?
mock/substitute 需要配置为按测试预期的方式运行
例如
public class MyTestClass {
public MyTestClass()
myRepository = Substitute.For<IMyRepository>();
}
[Fact]
public void My_Test() {
//Arrange
myRepository.CheckIfExists(mockObject.Name).Returns(mockObject.Name);
var myService = new MyService(myRepository);
//Act
var result = myService.Create(mockObject);
//Assert
//....check that the returned result is as expected.
}
}
我正在使用 xUnit 为需要查询数据库以验证记录是否已存在的方法创建单元测试。在我的测试中,我使用 NSubstitute Mock
我的存储库。
因此:
public class MyTestClass
{
public MyTestClass()
{
myRepository = Substitute.For<IMyRepository>();
}
[Fact]
public void My_Test()
{
var myService = new MyService(myRepository);
var result = myService.Create(mockObject);
....
}
这是我引用的服务的实现:
public class MyService
{
public MyService(IMyRepository repository)
{
_repository = repository
}
IMyRepository _repository;
public X Create(MyObject mockObject)
{
var result = _repository.CheckIfExists(mockObject.Name); //This return an NAME for example;
if (result == mockObject.Name)
{
return X.Error("Message...")
}
}
}
问题是:
我如何测试我的服务的 if (result == mockObject.Name)
,因为我的存储库是假的?我在测试 class.
return X.Error("Message...")
如何测试这段代码?
mock/substitute 需要配置为按测试预期的方式运行
例如
public class MyTestClass {
public MyTestClass()
myRepository = Substitute.For<IMyRepository>();
}
[Fact]
public void My_Test() {
//Arrange
myRepository.CheckIfExists(mockObject.Name).Returns(mockObject.Name);
var myService = new MyService(myRepository);
//Act
var result = myService.Create(mockObject);
//Assert
//....check that the returned result is as expected.
}
}