gpt4 book ai didi

c# - rhinomocks 设置期望,单元测试总是通过

转载 作者:行者123 更新时间:2023-11-30 21:09:59 27 4
gpt4 key购买 nike

我正在尝试更加熟悉 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() 会产生成功的单元测试?谢谢!

这是 Controller 构造函数的主体:

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

编辑:

// member variables
private IEventRepository _stubbedEventRepository;

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

最佳答案

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

关于c# - rhinomocks 设置期望,单元测试总是通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8748055/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com