簡體   English   中英

使用xUnit編寫單元測試時,如何在控制器方法內達到int變量

[英]How to reach int variable that inside my controller method when i write unit test with xUnit

我正在嘗試為我的控制器編寫單元測試。 我正在使用xUnit測試我的methots。

我可以在控制器內部到達“ changePasswordX”方法進行測試,但無法到達userId變量和聲明值以檢查它們是否相等?

如何在xUnit中測試此代碼?

    [HttpGet("ChangePassword")]
    public async Task<IActionResult> ChangePassword(int userId, oldPassword, newPassword)
    {      
        if (userId != int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value))
            return Unauthorized();

         _repo.changePasswordX(userId, oldPassword, newPassword);

        return Ok();
    }

單元測試不會測試方法每個步驟的每個中間結果。

單元測試旨在在給定某些輸入的情況下測試方法的整體輸出或返回值。

如果您需要測試單行代碼,則將其放在可以調用測試的單獨位置(庫)。

目前尚不清楚您實際上要達到什么目的,但是無論如何,這都是編寫單元/集成測試的錯誤方法。 在單元測試中,您不應該測試userId的值,也不應該聲明自己。 您知道,如果不匹配,則返回操作,並返回一個UnauthorizedResult ,而如果匹配,則會得到OkResult 如果您正在進行單元測試,則只需將用戶主體存根,將操作作為方法調用,然后驗證返回值即可。 如果您正在進行集成測試,則過程大致相同:您授權呼叫,並根據要測試的情況驗證狀態碼是401還是200。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM