2015-06-04 16 views
13

Tôi đang viết các kiểm tra về một số mã Elixir tương tác với SSH. Trong các thử nghiệm của tôi, tôi muốn bắt đầu một máy chủ SSH mà tôi có thể chạy mã của tôi. Tôi muốn lưu trữ mã này trong tệp riêng của nó trong thư mục kiểm tra và nhập nó bằng các thử nghiệm khác nhau khác nhau.Nhập mã thử nghiệm trong kiểm tra đơn vị elixir

Tôi chưa thể làm điều này để hoạt động tốt.

tôi đã cố gắng tạo ra một tập tin test/ssh_server.ex chứa một mô-đun SSHServer, nhưng khi tôi thêm import SSHServer để thử nghiệm của tôi, tôi nhận được:

(CompileError) thử nghiệm/end_to_end_test.exs: 13: mô-đun SSHServer không phải là được tải và không thể tìm thấy

Tôi có thiếu gì đó không? Có cách nào để buộc mix test nhập tệp thử nghiệm/ssh_server.ex của tôi không?

Trả lời

13

Tôi hiện đang có xung quanh điều này bằng cách tự tải mã từ file test_helper.exs tôi:

Code.load_file("test/ssh_server.ex") 
+10

Đây là một giải pháp tốt. Tuy nhiên, tôi sẽ đặt tên tệp là '.exs', vì nó không bao giờ được biên dịch. Một cách khác là nói với Mix để biên dịch mọi thứ trong một thư mục đặc biệt, như kiểm tra/hỗ trợ. Phoenix thực hiện việc này tại đây: https://github.com/phoenixframework/phoenix/blob/db2f953f24973fab8aa2aab3bd8fc9c87a17adc8/installer/templates/new/mix.exs#L10 –

+0

Tôi đang sử dụng tính năng này để gieo trước khi thử nghiệm với 'Code.load_file (" priv /repo/seeds.exs ")' trong bài kiểm tra 'setup' của tôi và nó hoạt động như một nét duyên dáng. – ibgib

+2

Tôi sẽ đi với 'Code.require_file' thay vì tải. Điều này sẽ đảm bảo rằng tệp chỉ được tải một lần. Tôi cũng sẽ đồng ý về việc sử dụng phần mở rộng '.exs'. Đây là cách ecto thực hiện: https://github.com/elixir-ecto/ecto/blob/master/test/ecto/test_helper.exs –

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