【问题标题】:Using Rhino Mocks how to check the value of a Struct Field in the parameter passed to a mock object?使用 Rhino Mocks 如何检查传递给模拟对象的参数中的结构字段的值?
【发布时间】: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


    【解决方案1】:

    除了Arg&lt;Person&gt;.Is.NotNull,你还可以使用Arg&lt;Person&gt;.Property.Value("Name", m.Name)

    还假设您正在使用 .Net 3.5 或更高版本,您可以做一些您可能认为或可能不认为读起来更好的事情,并避免使用属性名称的字符串: Arg&lt;Person&gt;.Matches(p =&gt; p != null &amp;&amp; p.Name == m.Name)

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多