Fixture常见用法

120 阅读1分钟

此文档记录Fixture常见用法

  1. mock数据库连接

//创建内存数据库
var dbContextOptions = new DbContextOptionsBuilder<MgmtDbContext>()
                .UseInMemoryDatabase(Guid.NewGuid().ToString()).Options;
// mock 数据库连接 
var mockedDbContext = Create.MockedDbContextFor<MgmtDbContext>(dbContextOptions);
  1. mock 数据库相关操作

  • Find 查找数据,返回指定列表

var mockRole = fixture.Build<RolePO>()
                .With(p => p.Id, roleId).Create();
mockedDbContext.Roles.FindAsync(roleId)
                .Returns(mockRole);
  • Create mock 创建一条数据

var mockRole = fixture.Build<RolePO>()
                .With(p => p.Id, roleId).Create();
mockedDbContext.Roles.Add(mockRole);
mockedDbContext.SaveChanges();
  1. 官方使用方式

var fixture = new Fixture();

var someDto = fixture.Create<ClientDto>();//实例化一个Dto集合,fixture 会自动提供一些值

var fixture = new Fixture().Customize(new AutoMoqCustomization());//自定义mock 

var sut = fixture.Create<MyService>();//创建抽象类实例

var mailComposerMock = fixture.Freeze<Mock<MailComposer>>();//每次返回相同的实例