メソッドの 1 つが共同作業者クラスのインスタンスを返すクラスを単体テストしようとしています。引数の値に応じて、新しく作成されたインスタンス、または保存された、以前に作成されたインスタンスを返します。
Expectations でコンストラクター呼び出しをモックし、その結果をコラボレーターのモック化されたインスタンスである値に設定します。しかし、新しいインスタンスを作成するパラメーター値を使用してメソッドをテストすると、モックされたコンストラクター、したがってメソッドは期待値を返しません。
これを次のように単純化しました。
package com.mfluent;
import junit.framework.TestCase;
import mockit.Expectations;
import mockit.Mocked;
import mockit.Tested;
import org.junit.Assert;
import org.junit.Test;
public class ConstructorTest extends TestCase {
static class Collaborator {
}
static class ClassUnderTest {
Collaborator getCollaborator() {
return new Collaborator();
}
}
@Tested
ClassUnderTest classUnderTest;
@Mocked
Collaborator collaborator;
@Test
public void test() {
new Expectations() {
{
new Collaborator();
result = ConstructorTest.this.collaborator;
}
};
Collaborator collaborator = this.classUnderTest.getCollaborator();
Assert.assertTrue("incorrect collaborator returned", collaborator == this.collaborator);
}
}
このテストが失敗する理由と、それを機能させる方法についてのアイデアは大歓迎です。
前もって感謝します、
Jim Renkel シニア テクニカル スタッフ mFluent, Inc. LLC