Làm thế nào để bạn giả lập lớp tĩnh?
Làm thế nào để bạn giả lập lớp tĩnh?

Video: Làm thế nào để bạn giả lập lớp tĩnh?

Video: Làm thế nào để bạn giả lập lớp tĩnh?
Video: Cách khiến người cãi cùn im lặng NGAY LẬP TỨC 2024, Có thể
Anonim

Tạo giao diện cho DriverManager, chế nhạo giao diện này, đưa nó vào thông qua một số loại tiêm phụ thuộc và xác minh trên đó chế nhạo . Quan sát: Khi bạn gọi phương pháp tĩnh trong một tĩnh thực thể, bạn cần thay đổi lớp trong @PrepareForTest. sau đó, bạn cần chuẩn bị lớp mã này nằm trong.

Sau đây, chúng ta có thể bắt chước các phương thức tĩnh không?

Mockito cho phép chúng tôi tạo chế nhạo các đối tượng. Từ phương pháp tĩnh thuộc về lớp, không có cách nào trong Mockito để giả lập các phương thức tĩnh . Tuy vậy, chúng ta có thể sử dụng PowerMock cùng với khung Mockito để giả các phương thức tĩnh.

chúng ta có thể giả lập các phương thức tĩnh C # không? 4 Câu trả lời. Moq (và dựa trên DynamicProxy khác chế giễu khuôn khổ) không thể chế nhạo bất cứ thứ gì không phải là ảo hoặc trừu tượng phương pháp . Ngoài ra, bạn có thể cấu trúc lại thiết kế của bạn cho các cuộc gọi trừu tượng tới phương pháp tĩnh và cung cấp sự trừu tượng này cho lớp của bạn thông qua việc tiêm phụ thuộc.

Tương tự như vậy, mọi người hỏi, chúng ta có thể bắt chước các phương thức tĩnh bằng MOQ không?

Chế nhạo các phương pháp tĩnh Các công cụ miễn phí như Moq có thể chỉ một chế nhạo giao diện hoặc ảo / trừu tượng phương pháp trên các lớp có hàm tạo mặc định công khai. Nếu như bạn cần thực sự giả các phương thức tĩnh , bạn cần sử dụng một công cụ thương mại như Microsoft Fakes (một phần của Visual Studio Enterprise) hoặc Typemock Isolator.

Tại sao các phương thức tĩnh là xấu?

Trong vũ trụ của OO phương pháp tĩnh là phản vật chất. Họ không cần phải tồi tệ , nhưng chúng nguy hiểm, vì chúng được sử dụng không đúng cách. Chỉ có hai tình huống khi phương pháp tĩnh hoặc các biến đang được sử dụng và nó không phải là một điều ghê tởm. Phương pháp tĩnh là một giá trị và hợp lệ phương pháp của việc tạo đối tượng.

Đề xuất: