Tôi có macro tạo mô-đun, cấu trúc cho mô-đun và triển khai giao thức cho cấu trúc đó.Tái hợp nhất các giao thức trong Elixir 1.2 hoặc cao hơn
Trong bộ phần mềm của tôi, tôi có một mô-đun thử nghiệm đơn giản gọi macro và sau đó thực hiện các xác nhận về việc triển khai mô-đun/cấu trúc/giao thức được tạo. Một thử nghiệm gọi hàm giao thức với cấu trúc để xác nhận rằng nó đã được thực hiện. Trước 1.2 điều này làm việc, nhưng bây giờ nó không thành công, và tôi nhận được cảnh báo sau khi chạy bộ.
test/dogma/rule_builder_test.exs:7: warning: the Dogma.Rule \
protocol has already been consolidated, an implementation for \
Dogma.RuleBuilderTest.MagicTestRule has no effect
Tôi đã gỡ bỏ bài kiểm tra này cho bây giờ, khi tôi tin rằng phần còn lại của các bài kiểm tra bộ của tôi chức năng này đầy đủ, nhưng tôi tò mò nếu có một cách để làm cho công việc này một lần nữa, hoặc ít nhất là im lặng cảnh báo .
Tôi đã phát xung quanh với Process.consilodate/2
nhưng không thành công.
Ah, tôi không biết tùy chọn dự án kết hợp 'consolidate_protocols'. Cảm ơn bạn. – lpil
Chỉ cần làm rõ, trộn tùy chọn dự án là tùy chọn trong tệp 'mix.exs' trong hàm' project'. Nếu bạn thấy điều này, bạn có thể muốn một cái gì đó như 'def project, do: [consolidate_protocols: Mix.env! =: Test]' – Astery