public void InitializeIoc() { var jsonComparer = JsonComparer.GetDefault((name, value) => { switch (value.Type) { case JTokenType.Integer: _scenarioContext[name] = value.ToObject <int>(); break; case JTokenType.Float: _scenarioContext[name] = value.ToObject <float>(); break; case JTokenType.String: _scenarioContext[name] = value.ToObject <string>(); break; case JTokenType.Boolean: _scenarioContext[name] = value.ToObject <bool>(); break; default: _scenarioContext[name] = value; break; } }); _objectContainer.RegisterInstanceAs(jsonComparer, typeof(IJsonComparer)); }
public void TestAssertThatWithJsonComparer() { var expectedJson = JObject.FromObject(new { parent = new { __capture = new { name = "some-capture-name", type = "integer" } } }); var actualJson = JObject.FromObject(new { parent = 42 }); var comparerCalled = false; var jsonComparer = JsonComparer.GetDefault((s, token) => { comparerCalled = true; }); Assert.That(actualJson, IsJson.EquivalentTo(expectedJson).WithComparer(jsonComparer)); Assert.That(comparerCalled, Is.True); }
public override ConstraintResult ApplyTo <TActual>(TActual actual) { var actualJToken = actual as JToken ?? JsonConvert.DeserializeObject <JToken>(actual as string, new JsonSerializerSettings { DateParseHandling = DateParseHandling.None }); var expectedJToken = (JToken)Arguments[0]; var jsonComparer = _jsonComparer ?? JsonComparer.GetDefault(); var errors = jsonComparer.Compare(expectedJToken, actualJToken); var message = JsonComparerOutputFormatter.GetReadableMessage(expectedJToken, actualJToken, errors); return(new JsonEquivalentConstraintResult(this, actual, errors?.Count == 0, message)); }