1 回答

TA貢獻1816條經(jīng)驗 獲得超4個贊
對于這樣的集成測試,您需要配置必要的依賴項。由于您已指示Autofac正在使用該容器,因此請像在生產(chǎn)中一樣配置容器。使用容器獲取中介并執(zhí)行所需的測試。
例如。
[TestClass]
public class LogInUserByForm_IntegrartionTest {
? ? private LogInUserByFormRequest CreateRequest(string userName, string password) {
? ? ? ? LogInUserByFormRequest request = new LogInUserByFormRequest {
? ? ? ? ? ? UserName = userName,
? ? ? ? ? ? Password = password
? ? ? ? };
? ? ? ? return request;
? ? }
? ? IMediator BuildMediator() {
? ? ? ? //AutoFac
? ? ? ? var builder = new ContainerBuilder();
? ? ? ? builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly).AsImplementedInterfaces();
? ? ? ? var mediatrOpenTypes = new[] {
? ? ? ? ? ? typeof(IRequestHandler<,>)
? ? ? ? };
? ? ? ? foreach (var mediatrOpenType in mediatrOpenTypes) {
? ? ? ? ? ? builder
? ? ? ? ? ? ? ? .RegisterAssemblyTypes(typeof(LogInUserByFormRequest).GetTypeInfo().Assembly)
? ? ? ? ? ? ? ? .AsClosedTypesOf(mediatrOpenType)
? ? ? ? ? ? ? ? .AsImplementedInterfaces();
? ? ? ? }
? ? ? ? builder.Register<ServiceFactory>(ctx => {
? ? ? ? ? ? var c = ctx.Resolve<IComponentContext>();
? ? ? ? ? ? return t => c.Resolve(t);
? ? ? ? });
? ? ? ? //...all other needed dependencies.
? ? ? ? //...
? ? ? ? var container = builder.Build();
? ? ? ? var mediator = container.Resolve<IMediator>();
? ? ? ? return mediator;
? ? }
? ? [TestMethod]
? ? [Description("")]
? ? public async Task UserName_ShouldHave_Max_30Characters_Exception() {
? ? ? ? try
? ? ? ? {
? ? ? ? ? ? //Arrange
? ? ? ? ? ? var request = CreateRequest("UserNameIsGreaterThanAllowed", "password");
? ? ? ? ? ? var mediator = BuildMediator();
? ? ? ? ? ? //Act
? ? ? ? ? ? var response = await mediator.Send(request);
? ? ? ? ? ? //Assert
? ? ? ? ? ? //...assert the expected values of response.
? ? ? ? }
? ? ? ? catch (System.Exception ex)
? ? ? ? {
? ? ? ? ? ? throw;
? ? ? ? }
? ? }
}
- 1 回答
- 0 關(guān)注
- 190 瀏覽
添加回答
舉報