I try to use Verify to write a snapshot unit test to test a complex object. However, Newtonsoft.Json JObject properties are serialized into an empty array.
Verify version is 19.6.0.
How to make Verify to serialize JObject properly?
Code to validate:
- in the production project
public class TestController : ControllerBase
{
public async Task<ActionResult> ReturnStubResult()
{
return Ok(
new {
Property1 = "value1",
Property2 = 5,
Property3 = new JObject()
{
["ChildProperty1"] = "child value 1",
["ChildProperty2"] = 2
}
});
}
}
- in the unit test project (reference Verify.Xunit library)
[Fact]
public async Task TestSnapshotSerialization()
{
var controller = new TestController();
var actionResult = await controller.ReturnStubResult();
var okObjectResult = actionResult.Should().BeOfType<OkObjectResult>().Which;
await Verifier.Verify(okObjectResult.Value);
}
returned JSON:
{
Property1: value1,
Property2: 5,
Property3: {
ChildProperty1: [],
ChildProperty2: []
}
}