[英]Mocking a dependent property with Moq
如果我有一個具有通過屬性注入解析的依賴項的類,是否可以使用Moq模擬該屬性的行為?
例如
public class SomeClass
{
//empty constructor
public SomeClass() {}
//dependency
public IUsefuleService Service {get;set;}
public bool IsThisPossible(Object someObject)
{
//do some stuff
//I want to mock Service and the result of GetSomethingGood
var result = Service.GetSomethingGood(someObject);
}
}
因此,SomeClass正在測試中,我試圖弄清楚我是否可以使用Moq模擬IUsefulService的行為,所以當我測試IsThisPossible並且使用該服務的行被命中時,使用了mock ...
我可能會誤解並過度簡化這個問題,但我認為下面的代碼應該有效。 由於您將Service
屬性作為公共屬性,因此您只需模擬IUsefulService
,new up SomeClass
,然后將SomeClass
上的Service
屬性設置為mock。
using System;
using NUnit.Framework;
using Moq;
namespace MyStuff
{
[TestFixture]
public class SomeClassTester
{
[Test]
public void TestIsThisPossible()
{
var mockUsefulService = new Mock<IUsefulService>();
mockUsefulService.Setup(a => a.GetSomethingGood(It.IsAny<object>()))
.Returns((object input) => string.Format("Mocked something good: {0}", input));
var someClass = new SomeClass {Service = mockUsefulService.Object};
Assert.AreEqual("Mocked something good: GOOD!", someClass.IsThisPossible("GOOD!"));
}
}
public interface IUsefulService
{
string GetSomethingGood(object theObject);
}
public class SomeClass
{
//empty constructor
public SomeClass() { }
//dependency
public IUsefulService Service { get; set; }
public string IsThisPossible(Object someObject)
{
//do some stuff
//I want to mock Service and the result of GetSomethingGood
var result = Service.GetSomethingGood(someObject);
return result;
}
}
}
希望有所幫助。 如果我遺失某些東西讓我知道,我會看到我能做些什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.