asp.net5 dbContext dependency injection for xUnit test



试图将我的服务正确注入到我的单元测试中。 在我的控制器中工作正常, 在构造函数上使用与 DbContext 相同的传递方法。

 public class PostTest
{
    public BlogContext db { get; set; }
    public PostTest(BlogContext Context)
    {
        db = Context;
    }

我所有后续测试都由于以下原因而失败:

以下构造函数参数没有匹配的夹具数据: 博客上下文上下文

我的配置设置是

  public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        // Adding CORS to api
        services.AddCors(options =>
        {
            options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin());
        });
        string connstr = "Data Source=(localdb)\ProjectsV12;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";

        services.AddEntityFramework()
            .AddSqlServer()
            .AddDbContext<BlogContext>(options =>
                options.UseSqlServer(connstr));
        //services.AddScoped<BlogContext>(provider => provider.GetService<BlogContext>());
    }

这是我的博客控制器的一个例子 - 这工作正常。

[Route("api/[controller]")]
public class BlogController : Controller
{
    private BlogContext db;
    public BlogController(BlogContext dbContext)
    {
        db = dbContext;
      //  db = new BlogContext();
    }
    //public BlogContext db;

    [HttpGet("{id}")]
    //public IEnumerable<Post> Get()
    public Post Get(int id)
    {
        try {
            Post FoundPost = db.Posts.Where(x => x.id == id).Single();
            return FoundPost;
        }
        catch
        {
            return new Post { id = 0 };
        }  
    }

任何建议将不胜感激

您需要在测试类中稍微不同

 public class BlogControllerFacts
 {
        public class Index
        {
            [Fact]
            public void GetDoesSomething()
            {
                // Arrange
                BlogContext db = new BlogContext(); // This should be mocked somehow
                const int id = 5;
                var controller = new BlogController(db);
                // Act
                var result = controller.Get(id);
                // Assert something
            }
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新