2012-01-26 18 views
5

Thông thường, khi trình kích hoạt chạy, chúng tôi kiểm tra loại hồ sơ người dùng có và nếu đó là loại mà chúng tôi không muốn trình kích hoạt chạy, thì chúng tôi thoát trình kích hoạt trước khi chạy bất kỳ mã nào khác.Làm cách nào để ngăn chặn trình kích hoạt được quản lý thực thi trong khi chạy một lớp thử nghiệm?

Vấn đề: chúng tôi có gói SF được cài đặt mà chúng tôi đã mua từ một số công ty khác và tất cả mã của nó không hiển thị với chúng tôi và không thể chỉnh sửa được. Làm thế nào chúng ta có thể ngăn chặn một số trong những kích hoạt từ chạy khác hơn là vô hiệu hóa thủ công chúng thông qua giao diện người dùng? Tôi muốn tạm thời vô hiệu hóa chúng trong khi chạy một lớp thử nghiệm.

Đã suy nghĩ về việc làm một cái gì đó như thế này, nhưng có một lỗi nói "DML không được phép trên ApexTrigger."

ApexTrigger at = [select id from ApexTrigger where name='SomeTriggerName']; 
at.status = 'Inactive'; 
update at; 
+2

Bạn có lý do chính đáng nào để vô hiệu hóa tính năng này không? Tôi biết phạm vi kiểm tra là một nỗi đau, nhưng nó phải được thử nghiệm một kịch bản thế giới thực - nếu kích hoạt sẽ chạy trong thế giới thực bạn muốn đảm bảo mã của bạn hoạt động với nó! –

+0

Lý do tôi cần vô hiệu hóa nó là do lớp kiểm tra kiểm tra nhiều kịch bản và trình kích hoạt đóng gói chạy nhiều câu lệnh SOQL, thực thi mà tôi không thể kiểm soát. Trước khi tôi có thể nhận được vùng phủ sóng thử nghiệm lên đến 100%, số truy vấn SOQL truy cập vào giới hạn thống đốc 100 trong không gian tên được đóng gói. –

Trả lời

4

Tôi đã thử làm điều gì đó tương tự và bị kẹt. Tôi không tin rằng có một cách để làm những gì bạn đang yêu cầu mà không cần chủ sở hữu của gói quản lý cập nhật Mã Apex.

Cách tiếp cận bạn liệt kê trước sự cố là giải pháp tuyệt vời; Tôi khuyên bạn nên sử dụng Custom Settings ngoài ra, mặc dù. Bạn có thể giới thiệu cho chủ sở hữu/nhà phát triển Trình kích hoạt để thực hiện kiểm tra Cài đặt tùy chỉnh trước khi thực hiện Trình kích hoạt. Đó là giải pháp tốt nhất mà tôi có thể nghĩ ra cho một số Triggers của riêng tôi.

Sẽ thật tuyệt nếu đối tượng ApexTrigger có thể được cập nhật, nhưng Salesforce không cho phép.

1

Tôi tin rằng các tùy chọn duy nhất của bạn là gỡ cài đặt hoặc hủy triển khai gói được quản lý.