}) redis.RespondToDo(func(commandName string, args ...interface{}) (reply interface{}, err error) { if commandName == "SENTINEL" { return []interface{}{"masterAddr", "port"}, nil } else { roleCalled = true return "role:master", nil } }) }) Describe("#ConnectAndGetMaster", func() { It("connects to a sentinel and returns the master connection", func() { sentinel = mcredis.NewSentinel(redisDialer, "master", "goodSentinel", 0) masterConn, err := sentinel.ConnectAndGetMaster() Expect(err).To(BeNil()) Expect(dialSentinelCount).To(Equal(1)) Expect(dialMasterCount).To(Equal(1)) Expect(roleCalled).To(BeTrue()) Expect(masterConn).To(Equal(redis)) }) It("returns an error if it cannot connect to any sentinels", func() { sentinel = mcredis.NewSentinel(redisDialer, "master", "badSentinel", 0) _, err := sentinel.ConnectAndGetMaster() Expect(err.Error()).To(Equal("Failed to connect to a sentinel")) Expect(dialSentinelCount).To(Equal(1)) })