diff --git a/core/commands/dns.go b/core/commands/dns.go
index 900f0ee1e0fd572d3958d63cd5ed663db7d0a711..e24b6a483d5afc9741bb7b5bcba95adc2d43ac8e 100644
--- a/core/commands/dns.go
+++ b/core/commands/dns.go
@@ -56,7 +56,7 @@ The resolver will give:
 
 		recursive, _, _ := req.Option("recursive").Bool()
 		name := req.Arguments()[0]
-		var resolver namesys.DNSResolver
+		resolver := namesys.NewDNSResolver()
 
 		depth := 1
 		if recursive {
diff --git a/namesys/dns.go b/namesys/dns.go
index f57ddce590183bf289a0d22e2eba900abdd4d0d0..3703bd8d01decfb0276b596028baf58492311ddc 100644
--- a/namesys/dns.go
+++ b/namesys/dns.go
@@ -11,12 +11,26 @@ import (
 	path "github.com/ipfs/go-ipfs/path"
 )
 
+type LookupTXTFunc func(name string) (txt []string, err error)
+
 // DNSResolver implements a Resolver on DNS domains
 type DNSResolver struct {
+	lookupTXT LookupTXTFunc
 	// TODO: maybe some sort of caching?
 	// cache would need a timeout
 }
 
+// NewDNSResolver constructs a name resolver using DNS TXT records.
+func NewDNSResolver() Resolver {
+	return &DNSResolver{lookupTXT: net.LookupTXT}
+}
+
+// newDNSResolver constructs a name resolver using DNS TXT records,
+// returning a resolver instead of NewDNSResolver's Resolver.
+func newDNSResolver() resolver {
+	return &DNSResolver{lookupTXT: net.LookupTXT}
+}
+
 // Resolve implements Resolver.
 func (r *DNSResolver) Resolve(ctx context.Context, name string) (path.Path, error) {
 	return r.ResolveN(ctx, name, DefaultDepthLimit)
@@ -36,7 +50,7 @@ func (r *DNSResolver) resolveOnce(ctx context.Context, name string) (path.Path,
 	}
 
 	log.Infof("DNSResolver resolving %s", name)
-	txt, err := net.LookupTXT(name)
+	txt, err := r.lookupTXT(name)
 	if err != nil {
 		return "", err
 	}
diff --git a/namesys/namesys.go b/namesys/namesys.go
index 0f5b853bea724d8f3833485815ddfdae480e7480..7fe317b66958766e2f15749ceb1568ff06bff91f 100644
--- a/namesys/namesys.go
+++ b/namesys/namesys.go
@@ -27,7 +27,7 @@ type mpns struct {
 func NewNameSystem(r routing.IpfsRouting) NameSystem {
 	return &mpns{
 		resolvers: map[string]resolver{
-			"dns":      new(DNSResolver),
+			"dns":      newDNSResolver(),
 			"proquint": new(ProquintResolver),
 			"dht":      newRoutingResolver(r),
 		},