I am following [this guide](https://learn.microsoft.com/en-us/aspnet/core/web-api/action-return-types?view=aspnetcore-3.1#actionresultt-type) to build my controllers. I do the following. 

This is my controller:

```
// GET api/sth/{sthId}/isValid
[HttpGet("{sthId: int}/isValid")]
[ProducesResponseType(StatusCodes.Status200OK)]
[MyAuthorizeFilter]
public ActionResult<bool> Whatever(int sthId)
{
    return this.myService.Whatever(sthId);
}

```

Theoretically, this should be converted to an Ok() `ActionResult`. However, If I write the following unit test:

```
[Fact]
public void Whatever()
{
    this.myServiceMock.Setup(x => x.Whatever(It.IsAny<int>())).Returns(true);

-> I DEBUG HERE ->  var result = this.myController.Whatever(1);

    Assert.IsType<OkObjectResult>(result);
    Assert.True((bool)result.Value);
}

```

I see that my `result` is an `ActionResult<bool>` indeed, whose `Value` is `true` as expected, but `result.Result` is null. So: no `Ok` action result whatsoever.

What am I missing? Do I have to write explicitly the `return Ok()` to get it? With the sentence 

> 
> Implicit cast operators support the conversion of both `T` and `ActionResult` to `ActionResult<T>`. `T` converts to `ObjectResult`, which means `return new ObjectResult(T);` is simplified to `return T;`.
> 
> 
> 

in the documentation I thought it was not necessary...?