I'm developing a Web API, and one of the test I came up with is that, if client makes a GET operation with a Physical Test ID (Physical Test is the resource I'm looking for) and that physical test is not found, the web API should return a 404 status.
Now, I'm using moq framework for my tests and I have the following code:
[TestMethod]
public void then_if_physical_test_not_found_return_not_found_status()
{
var unitOfWork = new Mock<IUnitOfWork>();
var repository = new Mock<IRepository<PhysicalTest>>();
repository.Setup(r => r.FindById(It.IsAny<int>())).Returns();
unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object);
var pt = new PhysicalTestResource(unitOfWork.Object);
HttpResponseMessage<PhysicalTest> response = pt.GetPhysicalTest(43);
Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode)
}
I need the Returns() method to return a null object, which is going to be what the actual API method would return if the resource is not found.
I tried sending null as a parameter in the Returns() method but had no success.
You don't indicate what the error was, but this should work:
unitOfWork.Setup(m => m.PhysicalTests).Returns((IRepository<PhysicalTest>)null);
I suspect you tried to call it with Returns(null)
, which causes the compiler to complain since Returns
is overloaded and it doesn't know which method should be called. Casting to a specific type removes the ambiguity.
rt
是一种返回类型的方法: FindById
repository.Setup(r => r.FindById(It.IsAny<int>())).Returns(Task.FromResult((rt)null));
You could try this:
ref1.Setup(s => s.Method(It.IsAny<Ref2>(), It.IsAny<string>()))
.Returns((Task<Ref3>)null);
ref1 = Mock Interface
Ref2 = Type request parameter
Ref3 = Type of return method mock
Organization
is a return type of method: Get
mockCache
.Setup(cache => cache.Get(It.IsAny<string>(), It.IsAny<string>(),It.IsAny<string>()))
.Returns(value: null as Organization);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.