【问题标题】:rhinomocks setting expectation, unit test always passesrhinomocks 设置期望,单元测试总是通过
【发布时间】:2012-01-05 18:50:46
【问题描述】:

我正在尝试更加熟悉 Rhinomocks 框架,并且我正在尝试了解 rhinomocks 的 Expect 方法。

这是我写的一个单元测试:

[TestMethod]
public void Create_ValidModelData_CreatesNewEventObjectWithGivenSlugId()
{
    //Arrange
    var eventList = new List<Event>() { new Event() { Slug = "test-user" } };

    _stubbedEventRepository.Stub(x => x.GetEvents())
        .Return(eventList);

    _stubbedEventRepository
        .Expect(x => x.SaveEvent(eventList.SingleOrDefault()))
        .Repeat
        .Once();

    var controller = new EventController(_stubbedEventRepository);
    EventViewModel model = new EventViewModel();

    //Act
    //controller.Create(model); COMMENTED OUT

    //Assert
    _stubbedEventRepository.VerifyAllExpectations();
}

我以为我理解这段代码只有在 SaveEvent(...) 方法被调用一次时才能通过。但是,在注释掉 controller.Create(model) 的情况下,测试仍然通过。在 controller.Create(model) 内部是调用 SaveEvent() 方法的地方。

我尝试了以下方法:

_stubbedEventRepository
    .Expect(x => x.SaveEvent(eventList.SingleOrDefault()));

但它仍然每次都通过,所以我在做什么不正确的堆栈溢出?我在网上查看的资源无法帮助我。为什么 VerifyAllExpectations() 会产生成功的单元测试? 谢谢!

这是控制器构造函数的主体:

public EventController(IEventRepository eventRepository)
{
    _eventRepository = eventRepository;
}

编辑:

// member variables
private IEventRepository _stubbedEventRepository;

    [TestInitialize]
    public void SetupTests()
    {
        _stubbedEventRepository = MockRepository.GenerateStub<IEventRepository>();
    }

【问题讨论】:

  • 你是如何创建_stubbedEventRepository的?你应该使用MockRepository.GenerateMock&lt;T&gt;()
  • 更新了帖子以显示我正在使用的内容,我使用的是不正确的 GenerateStub,因为我在 stubbedRepository 上断言

标签: c# unit-testing rhino-mocks


【解决方案1】:

如果您想验证被测代码的行为,您将使用具有适当期望的模拟,并进行验证。如果您只想传递一个可能需要以某种方式执行但不是此测试重点的值,您将使用存根。

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多