对我来说,这是完全不相关的单元测试,我不明白为什么有人会花时间编写它,因为从中获得的价值很小。如果此控制器通过在浏览器中执行该方法返回所需的类型,我会非常清楚。确实,您认为需要为此进行测试吗?为什么?
public class ConstituencyControllerTests
{
private ConstituencyController _constituencyController;
private Mock<IConstituencyService> _IConstituencyServiceMock;
public ConstituencyControllerTests() {
_IConstituencyServiceMock = new Mock<IConstituencyService>();
}
[Test]
public async Task I_Check_For_Return_Type_And_Result() {
_constituencyController = new ConstituencyController( _IConstituencyServiceMock.Object );
var result = await _constituencyController.Get();
var content = ( (dynamic)result ).Content;
Assert.IsEmpty( content );
Assert.IsInstanceOf( typeof( System.Web.Http.Results.OkNegotiatedContentResult<IEnumerable<ListOfConstituencies>> ), result );
_IConstituencyServiceMock.Verify( x => x.ListOfConstituencies(), Times.Once() );
}
}
单元测试应用程序逻辑和不信任的语言构造之间的界限
—
gnat
不同意@gnat。这与语言构造无关,而与控制器返回的结果类型有关。当您没有继承层次结构时,它可能会归结为相同的事物,但是当控制器希望返回祖先时,它变成了完全不同的野兽,控制器返回了Person,现在Person被更改为不是继承于Ancestor,而是PeopleAncestor ...也回答了为什么测试这种方法可能是一个好主意...;)单元测试的目的是应对某些事物的变化会破坏其他事物的情况。
—
Marjan Venema
倾向于同意,我通常不花太多时间来测试应用程序的入口点。就像单元测试是控制台应用程序的主要方法一样。对我来说意义不大
—
Mvision