In working on #12778 I found there is not an easy way to test more uncommon DNS scenarios where tight control of responses and errors is needed.
For the pure Go stub resolver consider restructuring things to make this easier, such as with the ability to swap out real TCP/UDP connections for a stub so tight control is possible while still exercising the bulk of code.
@mdempsky mentioned considering possibly related restructuring for #13281.