Bem,
quando você mocka uma classe, você deve informar, no método de teste, o que o método deve fazer, então, vejamos:
classeDao.expects(once()).method("getAlgumaCoisa").
with(eq(1), eq(true)).will(returnValue(obj));
Traduzindo:
A classeDao é um mock, e neste escopo (método de teste), ele será invocado 1 única vez (expects(once())), o método que será chamado é o getAlgumaCoisa (method("getAlgumaCoisa")), quando passar os parâmetros 1 e true (with(eq(1), eq(true))), retorne um Object obj (will(returnValue(obj))).
Simples, porém me deparei com uma situação bem estranha:
O método que eu estava testando, passava como parâmetro a data atual, e não o recebia como parâmetro. Bem, o problema é o fato do método instanciar um objeto e passar como parâmetro para outro método (que iremos mockar).
Vou simplificar com um exemplo:
Na classe classeManager
o metodo fazAlgo():
//faz um blablabla
classeDao.getAlgumaCoisa(new String[]{"1", "2"});
//faz o resto do blablabla
no meu test:
Estou testando a classe classeManager
o método testFazAlgo():
se eu fizer:
classeDao.expects(once()).method("getAlgumaCoisa").
with(eq(new String[]{"1", "2"})).will(returnValue(obj));
não vai funcionar, ele vai me dizer que o método nunca foi invocado.
Pra quem já estudou um pouco de O.O. já deve ter percebido, o objeto que instanciei na classe classeManager (classeDao.getAlgumaCoisa(new String[]{"1", "2"});) é diferente do instanciado na classe de testes (classeDao.expects(once()).method("getAlgumaCoisa").
with(eq(new String[]{"1", "2"})).will(returnValue(obj));).
Então a solução é:
classeDao.expects(once()).method("getAlgumaCoisa").
with(ANYTHING).will(returnValue(obj));
o que quer dizer:
Quando eu passar "Qualquer Coisa" (with(ANYTHING)) para o método getAlgumaCoisa, retorne o obj.
Importante lembrar que a quantidade de parâmetros deve ser igual a do método "de verdade".