At Instagram we have split dev and prod enviroments; gates are shared between dev-servers, but split from production.
For testing, we have context managers that let you do "with temporary_gate('gate_name', value)", so there's not much boilerplate in overriding/testing your code within a gate constraint.