2010-01-27 30 views
5

Sử dụng phiên bản mới nhất của EasyMock, tôi có một phương pháp mà tôi cần phải loại bỏ. Phương thức này lấy một tham số đối tượng và trả về void.EasyMock: cung cấp các đối số bạn không biết tại thời điểm biên dịch

Phương pháp gốc đang được gọi bằng phương pháp tôi đang thử nghiệm. Không có bất ngờ ở đó. Khó khăn của tôi là đối tượng được cung cấp như một đối số cho phương thức giả lập đang được tạo bởi phương pháp tôi đang thử nghiệm.

Tôi biết tôi có thể giải quyết vấn đề này bằng cách sử dụng createNiceMock() nhưng có cách nào để khai báo rõ ràng phương pháp này không?

Mẫu mã:

public interface IMockMe { 
    void doSomething(InnerObj obj); 
} 

public class TestMe { 
    IMockMe mockMe; 

    public void testThisMethod() { 
     InnerObj obj = new InnerObj(); 
     mockMe.doSomething(obj); 
    } 
} 

class Tester { 
    @Test 
    public void testThatDarnedMethod() { 
     IMockMe mocked = EasyMock.create(IMockMe.class); 

     mocked.doSomething(/* what goes here? */); 
     EasyMock.expectLastCall(); 

     TestMe testMe = new TestMe(mocked); 
     testMe.testThisMethod(); 

    } 
} 

Trả lời

4

Có một cái nhìn tại "Expectations linh hoạt với quẹt Đối số" của EasyMock documentation. Mẫu từ tài liệu:

String[] documents = new String[] { "Document 1", "Document 2" }; 
expect(mock.voteForRemovals(aryEq(documents))).andReturn(42); 

aryEq(documents) là cuộc gọi tạo khớp nối khớp với bất kỳ mảng nào có nội dung phù hợp hơn là khớp với nhận dạng.

Trong trường hợp của bạn, bạn có thể muốn đối sánh anyObject().

+0

Tuyệt vời, cảm ơn! – roufamatic

+0

Liên kết bị hỏng. Vui lòng xem: http://easymock.org/user-guide.html#verification-expectations – aglassman

+0

@aglassman: Đã khắc phục, cảm ơn. –

Các vấn đề liên quan