2014-04-14 14 views
9

Có cách nào để giả lập một tệp để thử nghiệm đơn vị trong Grails không?Grails java.io.File mocking

Tôi cần kiểm tra kích thước tệp và loại tệp và điều đó sẽ hữu ích nếu tôi có thể giả lập.

Bất kỳ liên kết nào đến tài nguyên sẽ hữu ích.

Trả lời

8

Bạn có thể thử java.io.File trong mã Groovy với Spock.

Dưới đây là một ví dụ về làm thế nào để làm điều đó:

import spock.lang.Specification 

class FileSpySpec extends Specification { 
    def 'file spy example'() { 
     given: 
     def mockFile = Mock(File) 
     GroovySpy(File, global: true, useObjenesis: true) 
     when: 
     def file = new File('testdir', 'testfile') 
     file.delete() 
     then : 
     1 * new File('testdir','testfile') >> { mockFile } 
     1 * mockFile.delete() 
    } 
} 

Ý tưởng là để trở Spock giả của tập tin từ một java.io.File gọi constructor kỳ vọng trong đó có các thông số mong đợi.

+0

Tôi không biết bạn có thể sử dụng Mock trên jdk api. Không thực sự những gì tôi đang tìm kiếm, nhưng nó đã giúp. Cảm ơn! – Akolopez

+1

Bạn có thể sử dụng giả lập * hoặc * một điệp viên toàn cầu, tùy thuộc vào việc bạn muốn giả lập một trường hợp cụ thể hay tất cả. –

+1

Đối với những người chia sẻ sự tò mò của tôi (và sự thiếu hiểu biết) về 'useObjenesis: true'. Theo trang web, [Objenesis] (http://objenesis.org/) cho phép tạo các đối tượng mà không thông qua các tham số hàm tạo. (Lưu ý rằng tất cả các hàm tạo cho [File] (https://docs.oracle.com/javase/7/docs/api/java/io/File.html) yêu cầu tham số) –