【发布时间】:2011-07-29 11:30:22
【问题描述】:
在 Rhino Mocks 中,我正在测试 Subject 类中名为 Store 的方法。 Subject.Store(Member) 在内部调用 IStore.Store(Person)。如何检查我在 Member 上设置的名称参数是否与调用 IStore.Store(Person) 中的 Person 参数中的名称相同。
显然,在结构中实现 Equals 方法然后调用 Arg.Is.Equals 是一种选择。但我无法控制 Person 或 Member 结构的源代码。
这里是代码 sn-p..
struct Person {
string name;
int age;
char sex;
}
struct Member {
string name;
string address;
string departnemt;
public Member(string name, string address, string departnemt) {
// TODO: Complete member initialization
this.name = name;
this.address = address;
this.departnemt = departnemt;
}
//other methods
}
interface IStore {
void Store(Person p);
//other methods
}
class Subject {
IStore db;
public void Store(Member m) {
//some logic to convert Member to Person
Person p = GetPersonFromMember(m);
db.Store(p);
}
//other methods
}
[Test]
public void TestStore() {
//Arrange
Member m = new Member("dave", "crawford Ave", "Physics");
var mockStore = MockRepository.GenerateMock<IStore>();
mockStore.Expect(x => x.Store(Arg<Person>.Is.NotNull));
//here i also want to check that the Person.Name is "dave"
//how can i do this?
//Act
subject.Commit();
//Assert
mockStore.VerifyAllExpectation();
}
【问题讨论】:
标签: c# unit-testing rhino-mocks