--- title: Initializing Expectations layout: page pageOrder: 7 section: 'Mock Server' subsection: true sitemap: priority: 0.7 changefreq: 'monthly' lastmod: 2018-11-16T16:00:00+01:00 ---
To ensure expectations are available as soon as MockServer is started it is possible to use an expectation initializer, there are three options:
Note: all three options require the class or file to be available to the MockServer, i.e. in the local classpath or filesystem. To remotely initialise the MockServer a client is required to connect to the MockServer after it has started and submit one or more expectations.
 MockServer expectations can be initialized when the MockServer starts, using a class, by specified the initializationClass configuration property as described in the Configuration Properties page, for example:
java -Dmockserver.initializationClass="org.mockserver.server.initialize.ExpectationInitializerExample" -jar ~/Downloads/mockserver-netty-5.6.0-jar-with-dependencies.jar -serverPort 1080 -logLevel INFO
The class must implement the org.mockserver.server.initialize.ExpectationInitializer interface and have a default constructor with zero arguments, for example:
public class ExpectationInitializerExample implements ExpectationInitializer {
@Override
public Expectation[] initializeExpectations() {
return new Expectation[]{
new Expectation(
request()
.withPath("/simpleFirst")
)
.thenRespond(
response()
.withBody("some first response")
),
new Expectation(
request()
.withPath("/simpleSecond")
)
.thenRespond(
response()
.withBody("some second response")
)
};
}
}
MockServer expectations can be initialized when the MockServer starts, using a JSON file, by specified the initializationJsonPath configuration property as described in the Configuration Properties page, for example:
java -Dmockserver.initializationJsonPath="org/mockserver/server/initialize/initializerJson.json" -jar ~/Downloads/mockserver-netty-5.6.0-jar-with-dependencies.jar -serverPort 1080 -logLevel INFO
The JSON file can be loaded using a related or absolute path or can be loaded from the classpath.
The JSON file should contain an array of serialised expectations, for example:
[
{
"httpRequest": {
"path": "/simpleFirst"
},
"httpResponse": {
"body": "some first response"
}
},
{
"httpRequest": {
"path": "/simpleSecond"
},
"httpResponse": {
"body": "some second response"
}
}
]
If the MockServer is started using the Maven Plugin a initializationClass property can be specified to initialize expectations, when the MockServer starts.
Note: the plugin must be started during the process-test-classes to ensure that the initialization class has been compiled from either src/main/java or src/test/java locations. In addition the initializer can only be used with start and run goals, it will not work with the runForked goal as a JVM is forked with a separate classpath. (required: false, default: false)
The following section from a pom.xml shows how the Maven Plugin can be configured to specify an initializationClass:
<plugin>
<groupId>org.mock-server</groupId>
<artifactId>mockserver-maven-plugin</artifactId>
<version>5.6.0</version>
<configuration>
<serverPort>1080</serverPort>
<logLevel>DEBUG</logLevel>
<initializationClass>org.mockserver.maven.ExampleInitializationClass</initializationClass>
</configuration>
<executions>
<execution>
<id>process-test-classes</id>
<phase>process-test-classes</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<phase>verify</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
The class must implement the org.mockserver.client.initialize.ExpectationInitializer interface and have a default constructor with zero arguments, for example:
public class ExampleInitializationClass implements ExpectationInitializer {
@Override
public void initializeExpectations(MockServerClient mockServerClient) {
mockServerClient
.when(
request()
.withPath("/simpleFirst")
)
.respond(
response()
.withBody("some first response")
);
mockServerClient
.when(
request()
.withPath("/simpleSecond")
)
.respond(
response()
.withBody("some second response")
);
}
}