Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取InMemoryDb数据时,测试环境中的DataService始终返回null_C#_.net_Testing_.net Core - Fatal编程技术网

C# 获取InMemoryDb数据时,测试环境中的DataService始终返回null

C# 获取InMemoryDb数据时,测试环境中的DataService始终返回null,c#,.net,testing,.net-core,C#,.net,Testing,.net Core,我的问题是: 由于这是一个集成测试,我是否需要首先模拟ICarService?如果需要,我在这里做错了什么?如果您正在测试CarService类如何与数据库交互,那么您不应该模拟它 您要做的是使用真正的CarService实现,并让依赖项注入将InMemoryDatabase作为CarContext参数添加到该类中 因此,删除Mock,并注册真实的代码 为什么返回空值? 在您的示例中,当您调用方法\u carService.GetAsync(id)时,它正在调用mock类。但是您没有在mock上

我的问题是:
由于这是一个集成测试,我是否需要首先模拟ICarService?如果需要,我在这里做错了什么?

如果您正在测试
CarService
类如何与数据库交互,那么您不应该模拟它

您要做的是使用真正的
CarService
实现,并让依赖项注入将InMemoryDatabase作为
CarContext
参数添加到该类中

因此,删除
Mock
,并注册真实的代码

为什么返回空值?

在您的示例中,当您调用方法
\u carService.GetAsync(id)
时,它正在调用mock类。但是您没有在mock上设置任何方法,因此任何调用都将返回
null

您需要添加以下内容以使模拟方法返回值:

public class CarController
{
    private readonly ICarService _carService;

    public CarController(ICarService carService)
    {
        _carService = carService;            
    }

    [HttpGet]
    public async Task<IActionResult> Get([FromRoute] int id)
    {
        var contact = await _carService.GetAsync(id); **// this is always null**
    }
}
\u carService.Setup(cs=>cs.GetAsync(It.IsAny())。返回(1);
但这不会调用内存中的数据库,因为您正在为
CarService
使用模拟

public class CarController
{
    private readonly ICarService _carService;

    public CarController(ICarService carService)
    {
        _carService = carService;            
    }

    [HttpGet]
    public async Task<IActionResult> Get([FromRoute] int id)
    {
        var contact = await _carService.GetAsync(id); **// this is always null**
    }
}
_carService.Setup(cs => cs.GetAsync(It.IsAny<int>()).Returns(1);