У меня есть метод промежуточного программного обеспечения, для которого требуется context.Authentication.User.Identity.Name, которое должно быть разрешено для правильного выполнения. Тем не менее, при написании модульного теста эти свойства, очевидно, равны нулю, поскольку никакого входа не было. Я не использую Oauth или что-либо аутентификацию, связанную с этим промежуточным программным обеспечением (за пределами очевидного свойства имени), поскольку его следует обрабатывать в другом месте другого промежуточного программного обеспечения (чтобы способствовать повторному использованию/гибкости компонента, который я разрабатываю). Есть ли способ издеваться/подделывать это значение, чтобы я мог запустить свой тест? Я пробовал все, что мог придумать, чтобы подделать вход, и я просто застрял в этой точке. Чтобы быть понятным, для промежуточного программного обеспечения требуется значение, а не вызов webapi или тому подобное.Owin.TestServer для тестирования промежуточного программного обеспечения, требующего проверки подлинности
//Arrange
var resolver = A.Fake<IDependencyResolver>();
A.CallTo(() => resolver.GetService(typeof(ISomeService))).Returns(new TestService());
using (var server = TestServer.Create(app =>
{
app.UseMyMiddleware(new MyMiddlewareOptions()
{
DependencyResolver = resolver
});
app.Run(async ctx =>
{
await ctx.Response.WriteAsync(ctx.Request.Path.Value);
});
}))
{
//Act
var response = await server.CreateRequest("/").GetAsync();
//Assert
A.CallTo(() => resolver.GetService(typeof(ISomeService)))
.MustHaveHappened(Repeated.Exactly.Once);
Assert.AreEqual(response.StatusCode, HttpStatusCode.OK);
//Etc.
}
Возможно, мне пришлось бы это проверить и посмотреть. По сути, это то, что мы делаем, передавая поддельную идентификацию в вызов свойства. – Shawn