第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 .net Framework 4.7 上使用 Mediatr 進行集成測試?

如何在 .net Framework 4.7 上使用 Mediatr 進行集成測試?

C#
慕哥9229398 2023-08-20 14:55:48
我正在使用 Mediatr 庫來注冊和調(diào)用我的 RequestHandler。一切都很順利,直到我開始閱讀更多有關(guān)集成測試的內(nèi)容。編輯后請閱讀我無法調(diào)用繼承自 RequesHandler 的類。我的班級是這樣的:public class MyRequestHandler : RequestHandler<MyRequest, MyResponse>{  ....}我沒有使用 Meditr異步,而是使用 .net Framework 4.7 而不是 asp.net core,因此,一切看起來都返回了我對 asp.net core 的答案。當我構(gòu)建時MyTestClass,要構(gòu)建RequestHandler我必須創(chuàng)建一個ServiceFactory,也許這就是問題,因為我不知道如何。 public MyClassTest() {    ServiceFactory sv = null;    _mediator = new Mediator(sv); }編輯提供更多信息我的應(yīng)用程序?qū)又杏羞@個處理程序public class LogInUserByFormHandler : RequestHandler<LogInUserByFormRequest, LogInUserByFormResponse>{    private readonly IValidator<LogInUserByFormRequest> _validator;    public LogInUserByFormHandler(IValidator<LogInUserByFormRequest> validator)    {        _validator = validator;    }    protected override LogInUserByFormResponse Handle(LogInUserByFormRequest request)    {        _validator.ValidateAndThrow(request);        var userInfo = GetUserInfo(request);        ValidateLogInUserByFormRules(userInfo);        var userLoginInfo = GetValidUserLoginInfo(request);        ValidateUserLoginInfoByFormRules(userLoginInfo);        var sessionKey = CreateUserSessionKey(userInfo);        var response = new LogInUserByFormResponse        {            UserName = request.UserName,            SessionKey = sessionKey,            UserId = userInfo.id_usuario        };        return response;    }    //A LOT OF CODE HERE, methods and etc}可以看到,它實現(xiàn)了 Mediatr。在我的表示層 Web 項目中,我使用 AutoFac 來注入處理程序,因此,我所做的任何請求總是由正確的方法處理。我所要做的就是打電話,如下所示:var logInByFormRequest = new LogInUserByFormRequest{    UserName = viewModel.UserName,    Password = viewModel.Password};var response = _mediator.Send(logInByFormRequest).Result;這就像一個魅力?,F(xiàn)在的問題出在測試項目上。它像演示項目一樣引用應(yīng)用程序。我不知道如何讓 mediator.send 找到正確的方法。
查看完整描述

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;

? ? ? ? }

? ? }

}

查看完整回答
反對 回復(fù) 2023-08-20
  • 1 回答
  • 0 關(guān)注
  • 190 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號