首页 > 解决方案 > 如何使用字典作为 api 的数据?

问题描述

我有一个创建的字典,看起来像这样

var projects = new Dictionary<string, string>
  { {"7000316139.13.01", "Project 1" },
  ... (all the records in the dictionary are sequential from here)
  }

我有一个看起来像这样的 get 函数

    public IActionResult GetProjectByProjectCode(string projectCode)
    {
        try
        {
            var project = _repository.Project.GetProjectByProjectCode(projectCode);

            if (project == null)
            {
                _logger.LogError($"Project with project code {projectCode}, has not been found in db.");
                return NotFound();
            }
            else
            {
                _logger.LogInfo($"Returned project with project code {projectCode}");

                var projectResult = _mapper.Map<ProjectDto>(project);
                return Ok(projectResult);
            }
        }
        catch (Exception ex)
        {
            _logger.LogError($"Something went wrong inside GetProjectByProjectCode action: {ex.Message}");
            return StatusCode(500, "Internal server error");
        }

    }

我需要的是访问 Dictionary 作为 get 方法的数据源。

我曾尝试将字典直接放入 get 方法中,但失败了。

我希望看到的结果如下: 7000316139.13.01 项目1

这是存储库代码

   public Project GetProjectByProjectCode(string projectCode)
{
    return FindByCondition(project => project.ProjectCode.Equals(projectCode))
        .FirstOrDefault();
}

希望这会有帮助

标签: c#asp.net-mvc-4asp.net-core-webapi

解决方案


您可能想要添加 _repository.Project.GetProjectByProjectCode 方法的另一个“模拟”实现,也许重新实现包含该方法的整个类。该实现应该从内联字典而不是数据库中获取值。然后,当您处于“测试模式”时添加一些机制以使用替代实现,否则使用标准实现。

除此之外,我建议您阅读一些有关单元测试范式和相关工具和技术的内容。


推荐阅读