VB 6.0으로 작성된 COM 라이브러리에 대한 테스트를 작성합니다. 우리가 직면 한 문제는 VB에서 선언 된 이벤트에 액세스 할 수 없다는 것입니다. 우리는 예외적으로 "객체는 일련의 이벤트를 지원하지 않습니다". 우리는 어떻게이 문제를 극복 할 수 있습니까?Visual Basic 6.0에서 dotnet 응용 프로그램에 선언 된 이벤트를 사용하여
답변
예를 들어 VB 6.0에는 DatabaseCommand라는 클래스가 있습니다.
Option Explicit
Public Event SavedSuccessfully()
Public Sub Execute(ByVal vAge As Integer, ByVal vName As String, ByVal vAddress As String)
RaiseEvent SavedSuccessfully
End Sub
이제
, personclass
Private WithEvents dbCommand As DatabaseCommand
Public Sub Init(ByVal vDBCommand As DatabaseCommand)
Set dbCommand = vDBCommand
End Sub
Private Sub dbCommand_SavedSuccessfully()
'not implemented
End Sub
지금, 시도합니다 (VB 프로젝트를 컴파일 한 후)이를 테스트 할 때
MockRepository repository = new MockRepository();
PersonLib.DatabaseCommand db = repository.DynamicMock<PersonLib.DatabaseCommand>();
PersonLib.PersonClass person = new PersonLib.PersonClass();
person.Init(db); --- this line throws error - Object or class does not support the set of events
귀하의 조롱 프레임 워크는 여기에 문제가 있습니다. 이 호출에 의해 반환되는 모의 객체 :
repository.DynamicMock<PersonLib.DatabaseCommand>();
DatabaseCommand
클래스의 인터페이스를 구현하지만, 해당 이벤트를 조롱하지 않습니다. 따라서 이벤트를 발생시킬 수있는 DatabaseCommand 객체를 수신 할 것으로 예상되는 VB6 코드에이 모의 객체의 인스턴스를 전달하면 작동하지 않습니다. 무슨 일이 일어나고 있는지
당신이 당신의 PersonClass.Init
방법에 모의 개체를 전달
코드는
PersonClass.Init
이 라인에 가져옵니다Set dbCommand = vDBCommand
VB6는
DatabaseCommand
클래스와 동일한 이벤트를 지원하는 경우Set
문의 오른쪽에있는 개체를 요청합니다 (VB6에서는이 작업을 수행하므로 사용자가 ddbCommand
을WithEvents
키워드와 함께 사용하므로dbCommand
개체에서 이벤트를 수신하도록 이벤트 싱크를 설정하려고 시도합니다.그러나 전달 된 객체는 모의 객체이며 실제
DatabaseCommand
객체가 아니며 실제DatabaseCommand
클래스가 구현하는 이벤트를 실제로 구현하지 않습니다. VB6에서이 문제가 발생하면보고있는 오류가 발생합니다.
DatabaseCommand
클래스는 테스트 코드 작업을 (물론, 내가 한 가지 방법을 생각할 수 있도록 순서에서와 같은 이벤트를 지원 할 수있는 방법을 생각할 수 없다, 그러나 포함 할
귀하의 수업을 재 설계), 더 합리적인 해결책을 찾으면 나중에 게시 할 수 있습니다.
안녕하세요, 몇 가지 대체 솔루션을 게시 할 수 있다면 좋을 것입니다. –
- 1. Visual Basic 6.0에서 HID USB 사용
- 2. Visual Basic 6.0을 VB.NET 선언
- 3. Visual Basic 응용 프로그램 도움말
- 4. Visual Basic 6.0 다운로드
- 5. Visual Basic .NET 응용 프로그램에 글꼴을 어떻게 포함시킬 수 있습니까?
- 6. Visual Basic 6.0에서 Format 함수를 사용하기 위해 추가해야하는 참조는 무엇입니까?
- 7. Visual Basic 6.0에서 저장 대화 상자없이 파일 저장
- 8. Visual Basic 6.0의 멀티 스레딩
- 9. Visual Studio 6.0에서 Visual Studio 2008로
- 10. VS2003/2008의 Visual Basic
- 11. Visual Basic 6 서식
- 12. VB6 응용 프로그램을 Visual Basic 2008로 업그레이드
- 13. Visual Basic 2005 + mysql
- 14. 제품 키 등록 - Visual Basic
- 15. Visual Studio 6.0에서 MFC 컴파일
- 16. Visual Basic 2008 파일 검색
- 17. 레거시 코드 Visual Basic for C#
- 18. 이벤트를 통해서만 Visual Basic 2008 기능에 액세스하도록하려면 어떻게합니까?
- 19. DotNET 응용 프로그램의 메모리 사용
- 20. Visual Basic .NET에서 RSA를 사용하여 파일 암호화
- 21. MySQL.data 구성 파일 - Visual Basic 2008
- 22. visual basic List.box 질문
- 23. Visual Basic 방법 % appdata %
- 24. Visual Basic 키 수신기
- 25. Visual Basic .NET 도움말
- 26. Visual Basic : FTP 다운로드
- 27. Visual Basic .NET : Schedule
- 28. Visual Basic, Array, Mod
- 29. Visual Basic .Net 3D Engine
- 30. Visual Basic 프로그램 정보 저장소
몇 가지 예제 코드를 제공해 주시겠습니까? 우리는 여러 번 문제없이이 작업을 여러 번했습니다. – Ant