Just been attempting to wrap some of our Cassandra persistence stuff with tests; and I have a problem getting this mocked out;
public class ConcreteCassandraThing
{
private PreparedStatement preparedStatement;
private ISession cassandraSession;
private const string CQL = "SELECT column FROM table";
public ConcreteCassandraThing(ISession cassSession)
{
cassandraSession = cassSession;
preparedStatement = cassandraSession.Prepare(CQL);
preparedStatement.SetConsistencyLevel(ConsistencyLevel.LocalQuorum);
}
public List<string> dostuff()
{
var returnValue = new List<string>();
var bound = preparedStatement.Bind();
var result = cassandraSession.Execute(bound);
foreach(var row in result.GetRows())
{
returnValue.Add(row.GetValue<string>("column"));
}
return returnValue;
}
}
[TestFixture]
public class CassandraUnmockableProblem
{
[Test]
public void Name()
{
var mockCassandra = new Mock<ISession>();
mockCassandra.Setup(x => x.Prepare(It.IsAny<string>())).Returns(() => new Mock<PreparedStatement>().Object);
var subject = new ConcreteCassandraThing(mockCassandra.Object);
subject.dostuff();
}
}