私のヘルパークラスの静的メソッドでgetMarkup()
を呼び出すと、NPEがスローされます。私がしたことは、MarkupMakerとその戻り値の両方を嘲笑することでした。これはMarkupのインスタンスです。最終的に、MarkupインスタンスのtoString()
に電話したいと思います。私が何をしても、getMarkup()
の呼び出しはNPEを投げています。どのようにしてメソッド呼び出しの値をspockで呼び出すかを教えてくれるドキュメントはどこにもありません。Spock Mocking - 私のメソッド呼び出し値が嘲笑されない
EDIT:例を追加しました。 maker.getMarkup()
の呼び出しは、私がスポークテストでそれを嘲笑したとしても、nullを返します。
Test.groovy
class TestExample extends Specification {
@Shared
MarkupMaker makerMock = Mock()
@Shared
MarkupObject markupMock = Mock()
def setup() {
markupMock.toString() >> "headline1"
makerMock.getMarkup() >> markupMock
}
@Unroll
def "Should return a Markupvalue #expectedvalue"(MarkupMaker helper, int tabElementIndex, String expectedValue) {
expect:
MarkupHelper.getMarkupForIndex(helper, tabElementIndex) == expectedValue
where:
helper | tabElementIndex | expectedValue
makerMock | 1 | "headline1"
}
}
Helper.java(モックオブジェクトのメソッドを実行する)
public class MarkupHelper {
public static MarkupObject getMarkupForIndex(MarkupMaker maker, int index){
if(index == 1){
maker.getMarkup();
}
return null;
}
}
MarkupMaker.java(モックオブジェクトのうちの1つ)
public class MarkupMaker {
public MarkupObject getMarkup() {
return new MarkupObject();
}
}
MarkupObject.java(について試験値を保持している最後のモックオブジェクト)
public class MarkupObject {
@Override
public String toString() {
return "headline1";
}
}
[MVCE](https://stackoverflow.com/help/mcve)を投稿してください。問題のコードがどのように呼び出されるかは、このスニペットからは明らかではありません。 –
大丈夫WIP atm – xetra11