.NET Core Unit Test Razor Pages RedirectToPage()

PixelPaul

次のRazorPageハンドラーメソッドを使用して、単体テストを作成MSTestMoqています。

public async Task<IActionResult> OnPostAsync()
{
    if (ModelState.IsValid)
    {
        var user = await _userManager.FindByEmailAsync(Input.Email);

        if (user == null)
        {
            return Page();
        }

        // Trying to unit test this code here
        if (!await _userManager.IsEmailConfirmedAsync(user))
        {
            return RedirectToPage("/Account/EmailNotConfirmed");
        }

        var code = await _userManager.GeneratePasswordResetTokenAsync(user);
        code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
        var callbackUrl = Url.ResetPasswordCallbackLink(user.Id.ToString(), code, Request.Scheme);
        var callbackLink = HtmlEncoder.Default.Encode(callbackUrl);

        await _emailService.SendRazorTemplateEmailAsync(Input.Email, EmailTemplate.ResetPassword, new {Link = callbackUrl});

        return RedirectToPage("/Account/ForgotPasswordSuccess", new { email = Input.Email });
    }

    return Page();
}

私は、コードブロックのためのユニットテストを書くことをしようとしているawait _userManager.IsEmailConfirmedAsync(user)リターンfalseRedirectToPage()これが私のユニットテストコードです:

private Mock<IEmailService>  _emailService;
private Mock<ILogger<ForgotPasswordModel>>  _logger;
private Mock<UserManager<ApplicationUser>> _userManager;
private Mock<IUserStore<ApplicationUser>> _userStore;
private ForgotPasswordModel _pageModel;

public ForgotPasswordTests()
{
    _emailService = new Mock<IEmailService>();
    _logger = new Mock<ILogger<ForgotPasswordModel>>();
    _userStore = new Mock<IUserStore<ApplicationUser>>();
    _userManager = new Mock<UserManager<ApplicationUser>>(_userStore.Object, null, null, null, null, null, null, null, null);
    _pageModel = new ForgotPasswordModel(_emailService.Object, _logger.Object, _userManager.Object);
}

[TestMethod]
public async Task OnPostAsync_WhenUserHasNotConfirmedEmail_RedirectsToCorrectPage()
{
    // Arrange
    _pageModel.Input = new ForgotPasswordPageModel() { Email = "[email protected]" };
    _userManager.Setup(x => x.FindByEmailAsync(It.IsAny<string>())).ReturnsAsync(new ApplicationUser());
    _userManager.Setup(x => x.IsEmailConfirmedAsync(It.IsAny<ApplicationUser>())).ReturnsAsync(false);

    // Act
    var result = await _pageModel.OnPostAsync();

    // Assert
    Assert.IsInstanceOfType(result, typeof(RedirectToPageResult));
    Assert.AreEqual("/Account/EmailNotConfirmed", result.PageName); //<-- Error Here
}

Assert正しいページにリダイレクトされることをテストするステートメントを書き込もうとしています。単体テストをデバッグすると、次のことがわかります。

ここに画像の説明を入力してください

PageName = /Account/EmailNotConfirmed、しかし、Assertそれからステートメントを作成しようとすると、次のエラーが発生します。

'IActionResult' does not contain a definition for 'PageName' and no accessible extension method 'PageName' accepting a first argument of type 'IActionResult' could be found

私は何が間違っているのですか?

Nkosi

目的のメンバーにアクセスするには、結果を適切なタイプにキャストする必要があります

//...

// Act
IActionResult result = await _pageModel.OnPostAsync();

// Assert
Assert.IsInstanceOfType(result, typeof(RedirectToPageResult));
RedirectToPageResult redirect = result as RedirectToPageResult; //<--cast here
Assert.AreEqual("/Account/EmailNotConfirmed", redirect.PageName);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

RedirectToPage()がASP.NET Core 3Razorページで機能しない

分類Dev

Printing PDF in ASP.net core 3.1 Razor Pages

分類Dev

AWS .NET Core unit test load non-default profile

分類Dev

ASP.NET Core Razor Pages | can partial views have page models

分類Dev

How to increment and use a value in Jquery and Razor pages, in ASP.net core 2.0

分類Dev

ModelState.AddModelError doesn't show any message in asp.net.core RAZOR pages

分類Dev

ModelState.AddModelError doesn't show any message in asp.net.core RAZOR pages

分類Dev

Asp.net core - razor pages (.cshtml) vs angular 2+

分類Dev

Asp .Net Core 2.2 Razor Pages Ajax CallPostが機能しない

分類Dev

ASP.Net Core Razor Pages application not binding to property within model

分類Dev

ASP.NET Razor Pages - Conditional redirection

分類Dev

AddMvc()の代わりにAddMvcCore()を使用するASP.NET Core 2.0 Razor Pages

分類Dev

.NET CORE Razor Pages AjaxによるC#メソッドの呼び出し

分類Dev

How to unit test an action filter attribute for web api in asp.net core?

分類Dev

Recursion in ASP.NET Core Razor views

分類Dev

.NET Core Razor C#関数

分類Dev

Bootstrap-select attributes in Razor/.Net Core

分類Dev

ASP.Net Core 2.0 Razor PagesにIFormFileを投稿するにはどうすればよいですか?

分類Dev

ASP.Net Core 2.0 Razor PagesにIFormFileを投稿するにはどうすればよいですか?

分類Dev

ASP.NET Core Razor Pagesプロジェクトで外部認証を有効にする方法は?

分類Dev

ASP.NET Core Razor Pagesモデルの状態が無効であり、モデルデータが空です

分類Dev

ASP .NET Core 3.0 Razor Pagesは、@ Url.Pageを使用してAJAXの動的hrefURLを生成します

分類Dev

Unit testing fileupload with Moq .net Core

分類Dev

ASP.NET Core 2.0 RazorとAngular / React / etc

分類Dev

How to prevent ViewData content encoding in ASP.Net Core Razor?

分類Dev

Use inputbox to filter in asp.net core razor with dapper

分類Dev

Asp.net CoreでWeb UIを作成するためにRazor Pagesが推奨されるのはなぜですか?

分類Dev

ASP.NET Core 2-ReSharper "Create Razor View"は、Pagesフォルダーに新しいビューを追加します

分類Dev

ASP .NET Core 2.1 Razor Pagesアンカータグヘルパーは、asp-routeの空のhrefを生成します

Related 関連記事

  1. 1

    RedirectToPage()がASP.NET Core 3Razorページで機能しない

  2. 2

    Printing PDF in ASP.net core 3.1 Razor Pages

  3. 3

    AWS .NET Core unit test load non-default profile

  4. 4

    ASP.NET Core Razor Pages | can partial views have page models

  5. 5

    How to increment and use a value in Jquery and Razor pages, in ASP.net core 2.0

  6. 6

    ModelState.AddModelError doesn't show any message in asp.net.core RAZOR pages

  7. 7

    ModelState.AddModelError doesn't show any message in asp.net.core RAZOR pages

  8. 8

    Asp.net core - razor pages (.cshtml) vs angular 2+

  9. 9

    Asp .Net Core 2.2 Razor Pages Ajax CallPostが機能しない

  10. 10

    ASP.Net Core Razor Pages application not binding to property within model

  11. 11

    ASP.NET Razor Pages - Conditional redirection

  12. 12

    AddMvc()の代わりにAddMvcCore()を使用するASP.NET Core 2.0 Razor Pages

  13. 13

    .NET CORE Razor Pages AjaxによるC#メソッドの呼び出し

  14. 14

    How to unit test an action filter attribute for web api in asp.net core?

  15. 15

    Recursion in ASP.NET Core Razor views

  16. 16

    .NET Core Razor C#関数

  17. 17

    Bootstrap-select attributes in Razor/.Net Core

  18. 18

    ASP.Net Core 2.0 Razor PagesにIFormFileを投稿するにはどうすればよいですか?

  19. 19

    ASP.Net Core 2.0 Razor PagesにIFormFileを投稿するにはどうすればよいですか?

  20. 20

    ASP.NET Core Razor Pagesプロジェクトで外部認証を有効にする方法は?

  21. 21

    ASP.NET Core Razor Pagesモデルの状態が無効であり、モデルデータが空です

  22. 22

    ASP .NET Core 3.0 Razor Pagesは、@ Url.Pageを使用してAJAXの動的hrefURLを生成します

  23. 23

    Unit testing fileupload with Moq .net Core

  24. 24

    ASP.NET Core 2.0 RazorとAngular / React / etc

  25. 25

    How to prevent ViewData content encoding in ASP.Net Core Razor?

  26. 26

    Use inputbox to filter in asp.net core razor with dapper

  27. 27

    Asp.net CoreでWeb UIを作成するためにRazor Pagesが推奨されるのはなぜですか?

  28. 28

    ASP.NET Core 2-ReSharper "Create Razor View"は、Pagesフォルダーに新しいビューを追加します

  29. 29

    ASP .NET Core 2.1 Razor Pagesアンカータグヘルパーは、asp-routeの空のhrefを生成します

ホットタグ

アーカイブ