Đây là từ JMockit Hướng dẫn chính thức:JMockit nhiều trường hợp ngoại lệ như kết quả cho phương pháp gọi
@Test
public void doSomethingHandlesSomeCheckedException() throws Exception
{
new Expectations() {
DependencyAbc abc;
{
abc.stringReturningMethod();
returns("str1", "str2");
result = new SomeCheckedException();
}
};
new UnitUnderTest().doSomething();
}
Có thể nêu ngược lại, có nghĩa là nhiều kết quả và một trở lại - Tôi cần phải ném 2 trường hợp ngoại lệ và chỉ sau đó trả về một giá trị tốt. Một cái gì đó như thế này là những gì Im looking for:
abc.stringReturningMethod();
returns(new SomeCheckedException(), new SomeOtherException(),"third");
này không hoạt động, JMockit không thể cast những ngoại lệ đối với String
(đó là kiểu trả về của stringReturningMethod
)
Sẽ không đặt kết quả cho cả ba cuộc gọi là 'third'? – Queequeg
Không. Nó sẽ ghi lại ba kết quả liên tiếp cho 'stringReturningMethod()'. (Một "kết quả" là một giá trị trả về, một ngoại lệ để ném, hoặc một 'Đại biểu' để thực thi. JMockit tự động ghi lại các nhiệm vụ này như là các lời gọi đến các phương thức nội bộ của nó, đó là lý do tại sao nó hoạt động.) –
Điều này không có tác dụng. Bạn phải làm 'result = new SomeCheckedException(); result = new SomeOtherException(); trả về ("Non-exception-String-value"); ' – searchengine27