我目前在測試我的控制器使用哪個被模擬的方法時遇到問題。它有一個特定枚舉的返回類型。我現在總是從這個模擬方法回來的默認枚舉值,而不是我指定它返回的值。我錯過了什麼嗎?我已經嘗試了Moq和JustMock lite,獲得了相同的結果。下面的JustMock lite例子。如何使用justmock/moq正確地測試enum的返回類型方法
希望我在複製代碼時沒有犯任何錯誤,我已經改變了所有對象的名稱,所以我很抱歉。
這裏是部分單元測試:
var returnStatus = ExampleEnum.Invalid;
//Mock the client
var client = Mock.Create<ITestInterface>();
Mock.Arrange(() => client.ValidateSomething(Guid.NewGuid()))
.Returns(returnStatus).MustBeCalled();
var testController = new TestController(client);
var result = testController.DoSomething(Guid.NewGuid().ToString()) as ViewResult;
下面是從控制器中的相關位:
private ITestInterface _client { get; set; }
public TestController(ITestInterface client)
{
_client = client;
}
這是我的控制器操作的一部分:
public ActionResult DoSomething(string id)
{
Guid token;
if(!string.IsNullOrEmpty(id) && Guid.TryParse(id, out token))
{
using (var client = _client)
{
ApplicationUser applicationUser;
var status = client.ValidateSomething(token);
switch (status)
{
的客戶端被正確模擬,但返回的「status」屬性始終是ExampleEnum.DefaultValue而不是va我已經指定了結果。
我希望我已經提供了足夠的信息。任何幫助非常感謝。
非常感謝,這工作一種享受。我認爲這個問題是關於枚舉而不是模擬本身的設置。因此,在安排模擬時,只有在值與傳遞給DoSomething的值相匹配時,纔會返回設置在返回值中的值,除非您使用Moq提及的匹配所有guid。 –
@DanHead是的(我不知道JustMock,但我想它和Moq是一樣的行爲)。 – sloth