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));
        }
示例#2
0
        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));
        }