我必须测试一个UserAdmin类,它依赖于数据库类。我已经模拟了数据库类来测试UserAdmin类。数据库类有一个方法isAdmin(),它决定用户是否是管理员。 UserAdmin类有一个名为removeUser()的方法,我收到此错误。如果用户是Admin,则removeUser()方法不允许删除用户 以下是我看到此错误的代码。
@Test
//testing remove user method of UserAdmin - remove Admin
public void testremoveUserAdmin() throws SQLException{
new Expectations() {{
dBConnection.isAdmin("admin");
times=1;
result = true;
}};
assertEquals(false,userAdmin.removeUser("admin"));
当我提出上述断言时,它会给出一个缺少的调用错误但是当我在断言中将false替换为true时,它表示预期为真但它是错误的。我不知道为什么我会收到此错误。类似于isAdmin()的方法运行的类似代码运行正常。请帮忙
答案 0 :(得分:1)
对我来说很好:
public class UserAdminTest {
static class DBConnection { boolean isAdmin(String userName) { return false; } }
static class UserAdmin {
boolean removeUser(String userName) {
DBConnection dbConnection = new DBConnection();
if (!dbConnection.isAdmin(userName)) {
// remove user
return true;
}
return false;
}
}
@Tested UserAdmin userAdmin;
@Mocked DBConnection dBConnection;
@Test
public void doesNotRemoveUserWhenAdmin() throws Exception {
new Expectations() {{ dBConnection.isAdmin("admin"); result = true; }};
boolean removedIt = userAdmin.removeUser("admin");
assertFalse(removedIt);
}
}
答案 1 :(得分:0)
在isAdmin方法之前应该调用另一种方法。在isAdmin方法之前调用它解决了这个问题。