Nunit System.InvalidOperationException

Arie

이것은 내가 테스트하고 싶은 방법입니다.

void Update(User user)
{
    if (_userQuery.IsNameExist(user.Guid, (int) user.UserId, user.Name))
        UpdateUser(user);
}

Update_Test()위에서 테스트해야하는 메소드가 있는 테스트 클래스 아래 .

[TestFixture]
class ModifyuserServiceTest
{
    private IModifyUserService ModifyUserService { get; set; }
    private Mock<IUserQuery> UserQuery { get; set; }
    private Mock<IUserRepository> UserRepository { get; set; }

    [SetUp]
    public void SetUp()
    {
        userQuery = new Mock<IUserQuery>();
        UserRepository = new Mock<IUserRepository>();
        ModifyUserService = new ModifyUserService(userQuery.Object, UserRepository.Object);
    }

    [Test]
    public void Update_Test()
    {
        userQuery.Setup(uow => uow.IsNameExist(It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>()))
                .Returns(true);

        ModifyuserService.Update(new User());

        UserRepository.Verify(uow => uow.Add(It.IsAny<User>()), Times.Once);
    }
}

어떤 이유로 든 오류가 발생합니다.

System.InvalidOperationException : Nullable object must have a value.

테스트 메서드를 디버그하면 테스트 된 메서드에서이 줄에 오류가 발생합니다.

if (_userQuery.IsNameExist(user.Guid, (int) user.UserId, user.Name))

인수 값을 살펴보면 다음 0, null, null과 같은 내용이 있습니다. 내가 지정한 테스트 방법에서와 같이 재미있을 것 같습니다 userQuery.Setup.

It.IsAny<int>(), It.IsAny<int>(), It.IsAny<string>()

나는 다음과 같이 시도했다.

userQuery.Setup(uow => uow.IsNameExist(999, 33, "whatever"))

그럼에도 불구하고 동일한 오류가 발생하고 값이 다음과 같이 표시됩니다. 0, null, null

여기서 무엇이 잘못 되었습니까?

최신 정보:

public bool IsNameExist(int guid, int userId, string name)
{
     Parameters = new List<IDbDataParameter>
     {
        Context.CreateParameter("@Guid", guid, DbType.Int64),
        Context.CreateParameter("@userId", userId, DbType.Int64),
        Context.CreateParameter("@Name", name, DbType.String)
     };

    var count = (int)Context.GetScalarValue($"SELECT count(*) FROM {UserTable} WHERE userId=@userId And Guid=@Guid And Name=@Name", CommandType.Text,
                 Parameters.ToArray(), null);

      return count > 0;
}
Nkosi

방금 테스트를 실행했습니다

int? x = null; 
int y = (int)x; //System.InvalidOperationException: 'Nullable object must have a value.'

테스트에서 동일한 오류 메시지로 실패합니다.

이것은 MOQ 설정과 관련이 없습니다.

테스트중인 메소드가로 캐스트 null시도하고 int있어 런타임 오류가 발생합니다.

이는 UserId테스트중인 메서드에 전달 된 값이 null 임을 의미합니다 .

테스트를 완료 할 수 있도록 사용자 ID 값을 설정해야합니다.

//...

var user = new User() {
    UserId = 0
};

ModifyuserService.Update(user);

//...

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

XmlSerializer System.InvalidOperationException

분류에서Dev

System.InvalidOperationException :

분류에서Dev

System.InvalidOperationException with tasks in C #

분류에서Dev

Visual Basic 'System.InvalidOperationException'

분류에서Dev

C # WPF의 System.InvalidOperationException

분류에서Dev

ASP.Net 오류 System.InvalidOperationException

분류에서Dev

System.InvalidOperationException: 'There is an error in the XML document (1, 1).'

분류에서Dev

ParsePush.SubscribeAsync ( ""); 항상 System.InvalidOperationException 발생

분류에서Dev

서비스 버스 System.InvalidOperationException

분류에서Dev

XmlSerializer가 System.InvalidOperationException을 throw합니다.

분류에서Dev

EF 코드 우선-System.InvalidOperationException

분류에서Dev

Kestrel, system.InvalidOperationException을 시작할 수 없습니다.

분류에서Dev

오류 받기 : System.InvalidOperationException : 사용자 처리되지 않음

분류에서Dev

System.InvalidOperationException DataGridView에 새 행을 추가하려고 할 때

분류에서Dev

System.InvalidOperationException : 'XML 문서 (1, 1)에 오류가 있습니다.'

분류에서Dev

Breeze 및 WebApi에서 System.InvalidOperationException 예외 받기

분류에서Dev

DataGridView System.InvalidOperationException 셀이 DataGridView에 없습니다.

분류에서Dev

Getting “Authentication failed. System.InvalidOperationException” error intermittently with jquery call to Webmethod

분류에서Dev

Windows application-c #의 MySql 오류 System.InvalidOperationException

분류에서Dev

Android에서 System.InvalidOperationException이 발생했습니다.

분류에서Dev

System.InvalidOperationException : 가시성을 설정할 수 없습니다.

분류에서Dev

SqlDataReader를 실행하려고 할 때 System.InvalidOperationException 발생

분류에서Dev

C # byte []를 비트 맵 System.InvalidOperationException으로

분류에서Dev

업데이트를 시도 할 때 EF 코어의 System.InvalidOperationException

분류에서Dev

System.InvalidOperationException이 null 값을 확인하는 동안

분류에서Dev

NUnit 3.2.0 Console Runner System.NullReferenceException을 실행할 때 / domain = multiple

분류에서Dev

{System.InvalidOperationException : 'System.String'형식에서 'System.Collections.Generic.KeyValuePair 형식으로의 매개 변수 변환

분류에서Dev

웹앱을 실행하려고 할 때 System.InvalidOperationException이 발생합니다.

분류에서Dev

System.InvalidOperationException : '클라이언트'27MarchTemplate.Client '를 찾을 수 없습니다.'

Related 관련 기사

  1. 1

    XmlSerializer System.InvalidOperationException

  2. 2

    System.InvalidOperationException :

  3. 3

    System.InvalidOperationException with tasks in C #

  4. 4

    Visual Basic 'System.InvalidOperationException'

  5. 5

    C # WPF의 System.InvalidOperationException

  6. 6

    ASP.Net 오류 System.InvalidOperationException

  7. 7

    System.InvalidOperationException: 'There is an error in the XML document (1, 1).'

  8. 8

    ParsePush.SubscribeAsync ( ""); 항상 System.InvalidOperationException 발생

  9. 9

    서비스 버스 System.InvalidOperationException

  10. 10

    XmlSerializer가 System.InvalidOperationException을 throw합니다.

  11. 11

    EF 코드 우선-System.InvalidOperationException

  12. 12

    Kestrel, system.InvalidOperationException을 시작할 수 없습니다.

  13. 13

    오류 받기 : System.InvalidOperationException : 사용자 처리되지 않음

  14. 14

    System.InvalidOperationException DataGridView에 새 행을 추가하려고 할 때

  15. 15

    System.InvalidOperationException : 'XML 문서 (1, 1)에 오류가 있습니다.'

  16. 16

    Breeze 및 WebApi에서 System.InvalidOperationException 예외 받기

  17. 17

    DataGridView System.InvalidOperationException 셀이 DataGridView에 없습니다.

  18. 18

    Getting “Authentication failed. System.InvalidOperationException” error intermittently with jquery call to Webmethod

  19. 19

    Windows application-c #의 MySql 오류 System.InvalidOperationException

  20. 20

    Android에서 System.InvalidOperationException이 발생했습니다.

  21. 21

    System.InvalidOperationException : 가시성을 설정할 수 없습니다.

  22. 22

    SqlDataReader를 실행하려고 할 때 System.InvalidOperationException 발생

  23. 23

    C # byte []를 비트 맵 System.InvalidOperationException으로

  24. 24

    업데이트를 시도 할 때 EF 코어의 System.InvalidOperationException

  25. 25

    System.InvalidOperationException이 null 값을 확인하는 동안

  26. 26

    NUnit 3.2.0 Console Runner System.NullReferenceException을 실행할 때 / domain = multiple

  27. 27

    {System.InvalidOperationException : 'System.String'형식에서 'System.Collections.Generic.KeyValuePair 형식으로의 매개 변수 변환

  28. 28

    웹앱을 실행하려고 할 때 System.InvalidOperationException이 발생합니다.

  29. 29

    System.InvalidOperationException : '클라이언트'27MarchTemplate.Client '를 찾을 수 없습니다.'

뜨겁다태그

보관