首先让你自己的断言类:
public class SitebricksReplyAssertion {
public static <T> void assertIsRepliedWith(Reply<T> reply, T expected) {
assertFieldValue("entity", reply, expected);
}
public static <T> void assertThatReplyStatusIs(Reply<T> reply, int expected) {
assertFieldValue("status", reply, expected);
}
private static <T> void assertFieldValue(String fieldName, Reply reply, T expected) {
Field field = null;
try {
field = reply.getClass().getDeclaredField(fieldName);
field.setAccessible(true);
T actual = (T) field.get(reply);
assert actual != null;
assertThat(actual, is(equalTo(expected)));
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
和测试:
public class ServicesTest {
@Rule
public JUnitRuleMockery context = new JUnitRuleMockery();
@Mock
PendingUserRepository userRepository;
@Test
public void testName() throws Exception {
Services services = new Services(userRepository);
final List<PendingUserEntity> users = new ArrayList<PendingUserEntity>() {{
add(new PendingUserEntity("email", "name", "url"));
add(new PendingUserEntity("email2", "name2", "url2"));
}};
context.checking(new Expectations() {{
oneOf(userRepository).retrieveAll();
will(returnValue(users));
}});
final Reply<List<PendingUserEntity>> rep = services.getAll();
SitebricksReplyAssertion.assertThatReplyStatusIs(rep, 200);
SitebricksReplyAssertion.assertIsRepliedWith(rep,users);
}
}
和服务等级:
@At("/getpendingusers")
@Get
public Reply<List<PendingUserEntity>> getAll() {
List<PendingUserEntity> pendingUserEntities = pendingUserRepository.retrieveAll();
return Reply.with(pendingUserEntities).as(Json.class);
}
断言类代码取自这里:https ://gist.github.com/AdelinGhanaem/4072405/