0
InetAddress.getLocalHost().getHostName()
上記のコードをテストするにはどうすればJMockitを利用できますか?Javaでjmockitを使用して静的チェーンメソッドをモックする方法
InetAddress.getLocalHost().getHostName()
上記のコードをテストするにはどうすればJMockitを利用できますか?Javaでjmockitを使用して静的チェーンメソッドをモックする方法
あなたが与えたチェーン方法は以下と等価です:
InetAddress localHost = InetAddress.getLocalhost();
String hostName = localHost.getHostName();
したがって、我々は2つのモックにこれを分割する必要があります。
@Test
public void myTest(@Mocked InetAddress mockedLocalHost) throws Exception {
new Expectations() {{
mockedLocalHost.getHostName();
result = "mockedHostName";
}};
// More to the test
}
をしかし、どのように我々はmockedLocalHost
たちがInetAddress.getLocalhost()
を呼び出したときに返されるインスタンスであることを得るのですか:
第2の部分は簡単にだけInetAddress
をからかうなどのようなExpectations
ブロックにそれを置くことによって行われていますか? partial mockingを使用すると、任意の静的メソッドに使用できます。これは、あなたが計画通りにInetAddress.getLocalHost().getHostName()
をからかっに
@Test
public void myTest(@Mocked InetAddress mockedLocalHost) throws Exception {
new Expectations(InetAddress.class) {{
InetAddress.getLocalHost();
result = mockedLocalHost;
mockedLocalHost.getHostName();
result = "mockedHostName";
}};
// More to the test
}
なります。そのための構文はnew Expecations()
のパラメータとして、静的メソッドを含むクラスが含まれ、その後、我々は、他のメソッド呼び出しと同じように、それを嘲笑することです。
標準ライブラリをテストすることで何を達成したいですか? – Makoto
ホスト名に基づいて、私はいくつかの属性を設定して何らかのアクションをとっています。上記のコードをどうやって嘲笑しますか? – surya