我遇到了EasyMock的问题,为预期的(定义的)方法调用返回null.
创建模拟对象
mock = EasyMock.createMock(DAO.class);
Run Code Online (Sandbox Code Playgroud)
模拟在单元测试中设置.
expect(mock.update(myObj).andReturn(myObjUpdated).once();
replayAll();
service.setDao(mock);
service.processData(myObj);
verifyAll();
Run Code Online (Sandbox Code Playgroud)
processData方法只是调用
MyObject objUpdated = dao.update(myObj);
Run Code Online (Sandbox Code Playgroud)
这是构建模拟的接口.
public interface DAO {
public <ENTITY> ENTITY update(ENTITY entity);
}
Run Code Online (Sandbox Code Playgroud)
我对可能导致问题的原因感到很困惑.我已经确认'obj'与我在单元测试中定义的对象相同.我也没有遇到任何其他嘲笑的问题(我知道).
这个问题可能与传入的Object有关吗?
提前致谢.我真的不确定其他哪些信息对您有帮助.
编辑:这是测试类(事实证明我的误解开始了)
public class TestMyService extends EasyMockHelper {...}
Run Code Online (Sandbox Code Playgroud) 我使用JPA构建了我的数据模型,并使用Hibernate的EntityManager 3来访问数据.我使用HSQLDB进行测试(junit).我正在将此配置用于其他类,并且没有任何问题.
但是,最新一批表使用复合键作为主键,并且在实现时无法从数据库中检索填充的行.我没有收到错误,查询只返回null对象.
例如,如果我查询(使用jsql)"FROM Order o"返回表中所有订单的列表,我的list.size()具有适当数量的元素(2),但元素为null.
我希望有一个比我更敏锐的人能够辨别出我做错了什么.提前致谢!
(简化)表定义为:
CREATE TABLE member (
member_id INTEGER NOT NULL IDENTITY PRIMARY KEY);
CREATE TABLE orders (
orders_id INTEGER NOT NULL,
member_id INTEGER NOT NULL,
PRIMARY KEY(orders_id, member_id));
ALTER TABLE orders
ADD CONSTRAINT fk_orders_member
FOREIGN KEY (member_id) REFERENCES member(member_id);
Run Code Online (Sandbox Code Playgroud)
实体POJO由以下定义:
@Entity
public class Member extends Person implements Model<Integer>{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="MEMBER_ID", nullable=false)
private Integer memberId;
@OneToMany(fetch=FetchType.LAZY, mappedBy="member", cascade=CascadeType.ALL)
private Set<Order> orderList;
}
@Entity
@Table(name="ORDERS")
@IdClass(OrderPK.class)
public class Order extends GeneralTableInformation implements Model<Integer>{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) …Run Code Online (Sandbox Code Playgroud) 在mercurial中是否可以忽略整个目录中的更改.
例如,我想mercurial不告诉我已经发生了对"class"目录的更改,因为我不希望版本控制我的项目的*.class文件.