¿Cómo puedo comparar dos listas con la prueba xunit?

4
brstkr 2019-12-23 16:01.

Actualmente estoy tratando de comparar dos listas, con los mismos elementos, con xUnit pero obtengo un error mientras se ejecuta.

Assert.Equal(expectedList, actualList);

Error:

"Assert.Equal() Failure"
Expected: List<myObject> [myObject { modifier = '+', name = "name", type = "string" }, myObject { modifier = '+', name = "age", type = "int" }]
Actual:   List<myObject> [myObject { modifier = '+', name = "name", type = "string" }, myObject { modifier = '+', name = "age", type = "int" }]

1 answers

4
panoskarajohn 2019-12-23 23:20.

Esto tiene que ver con la igualdad de objetos.

MyObjectno implementa el Equals method. De forma predeterminada, obtiene una igualdad de referencia. Supongo que tienes dos objetos diferentes para MyObject.

Lo que significa que no importa que su Lista contenga el objeto similar (es decir, con los mismos valores), no son de la misma referencia , por lo que su prueba verifica eso, es por eso que falla .

internal class MyObject
{
    {
        public char Modifier { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }

    }
}


            [Fact]
            public void ListMyObject()
            {
                var list1 = new List<MyObject>
                {
                    new MyObject{ }
                };
                var list2 = new List<MyObject>
                {
                    new MyObject{ }
                };

                Assert.Equal(list1, list2); // Fails
            }

Cuando actualizamos nuestra clase a esto.

internal class MyObject
    {
        public char Modifier { get; set; }
        public string Name { get; set; }
        public string Type { get; set; }
        //When i add this to my class.
        public override bool Equals(object obj)
        {
            return this.Name == ((MyObject)obj).Name;
        }
    }

También como se menciona en los comentarios de Jonathon Chase.

También es una buena idea para overrideel GetHashCode()método. Se prefiere heredar de IEquatable<T>para que pueda evitar el casting.

Todo se vuelve verde.

        [Fact]
        public void ListMyObject()
        {
            var list1 = new List<MyObject>
            {
                new MyObject{ Name = "H" }
            };
            var list2 = new List<MyObject>
            {
                new MyObject{ Name = "H" }
            };

            Assert.Equal(list1, list2); //Passes
        }

Related questions

MORE COOL STUFF

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett se acostó con su esposo después de 3 días juntos y sigue casada con él 25 años después

Cate Blanchett desafió los consejos típicos sobre citas cuando conoció a su esposo.

Por qué Michael Sheen es un actor sin fines de lucro

Por qué Michael Sheen es un actor sin fines de lucro

Michael Sheen es un actor sin fines de lucro, pero ¿qué significa eso exactamente?

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habla sobre emocionantes encuentros con fans en RomaDrama Live! [Exclusivo]

¡La estrella de Hallmark, Colin Egglesfield, habló sobre los emocionantes encuentros con los fanáticos en RomaDrama Live! además de su programa INSPIRE en la convención.

Por qué no puedes transmitir 'Northern Exposure' en línea

Por qué no puedes transmitir 'Northern Exposure' en línea

Tendrás que desempolvar un reproductor de Blu-ray o DVD para ver por qué Northern Exposure se convirtió en uno de los programas más populares de los 90.

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Dona tu cabello para ayudar a mantener limpia nuestra agua

Dona tu cabello para ayudar a mantener limpia nuestra agua

Los recortes de cabello de los salones y las donaciones personales se pueden reutilizar como tapetes que absorben los derrames de petróleo y ayudan a proteger el medio ambiente.

Una mirada a las bodas más memorables de la Casa Blanca

Una mirada a las bodas más memorables de la Casa Blanca

Solo unas pocas personas se han casado en la Casa Blanca en los últimos más de 200 años. ¿Quiénes eran y qué se requiere para marcar una boda allí?

¿Cuál es la toronja más dulce: blanca, roja o rosada?

¿Cuál es la toronja más dulce: blanca, roja o rosada?

¿Tu boca se emociona al pensar en comer una toronja jugosa? Bueno, frunce el ceño, porque la toronja está repleta de vitaminas y antioxidantes que tu cuerpo necesita.

Cómo acceder a la base de datos de aprendizaje de Lynda de forma gratuita

Cómo acceder a la base de datos de aprendizaje de Lynda de forma gratuita

Crédito de la imagen: Drew Angerer / Getty Si está buscando adelantarse en su resolución de Año Nuevo y finalmente editar esas fotos familiares, aprender un nuevo lenguaje de programación o manejar Microsoft Excel, su biblioteca local está aquí para ayudarlo. Con su tarjeta de la biblioteca, puede acceder a Lynda y su catálogo de videos y recursos educativos, sin necesidad de suscripción.

Qué estás haciendo cuando llamas a mi hermano "retrasado"

Qué estás haciendo cuando llamas a mi hermano "retrasado"

Ilustración de Jim Cooke. Nunca he sido una persona violenta, al menos no instintivamente.

Este video muestra cómo instalar cables Ethernet en el exterior de su casa

Este video muestra cómo instalar cables Ethernet en el exterior de su casa

Nada es tan confiable para el Internet de su hogar como instalar un cable Ethernet entre habitaciones. En algunos casos, puede ser más fácil tender el cable por el exterior que por el interior de la casa.

GM pagará $ 900 millones por ocultar el defecto del interruptor de encendido a los reguladores: informe

GM pagará $ 900 millones por ocultar el defecto del interruptor de encendido a los reguladores: informe

General Motors pagará una multa de 900 millones de dólares y será acusada penalmente por ocultar un defecto a los reguladores con el fin de poner fin a una investigación federal, según fuentes que hablaron con Reuters. Eso es menos de $ 1.

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

Emma Stone pone a la venta su casa en la playa de Cliffside Malibu por $ 4.2 millones: ¡vea el interior!

Emma Stone pone a la venta su casa en la playa de Cliffside Malibu por $ 4.2 millones: ¡vea el interior!

La casa de mediados de siglo del ganador del Oscar cuenta con tres dormitorios, dos baños y vistas al mar

Jeannie Mai Jenkins dice que "se deprimió mucho, mucho" durante su experiencia de amamantar

Jeannie Mai Jenkins dice que "se deprimió mucho, mucho" durante su experiencia de amamantar

"Te sientes tan derrotada cuando tu bebé tiene hambre que no estás produciendo lo suficiente para el bebé", dijo Jeannie Mai Jenkins sobre amamantar a su hija de 4 meses, Monaco.

La esposa de Bobby Brown, Alicia, no se enfoca en su pasado: "Bobby y Whitney fueron su momento, soy el Yin de su Yang"

La esposa de Bobby Brown, Alicia, no se enfoca en su pasado: "Bobby y Whitney fueron su momento, soy el Yin de su Yang"

La pareja de casi 10 años comparte su historia de amor antes de la nueva serie de realidad de A&E Bobby Brown: Every Little Step, que se estrenará el 31 de mayo.

¿Qué función de borde?

¿Qué función de borde?

Edge Functions... suena sexy, tu abuela no sabrá lo que es, y probablemente tú tampoco, todavía. Está bien, estoy aquí para ayudarlo en su viaje para comprender Edge de una manera más simple, con suerte.

¿También está “tratando” de centrarse más en el cliente?

¿También está “tratando” de centrarse más en el cliente?

¿Ha experimentado alguna vez que el enfoque de las discusiones sobre características de productos cambia de lo que le gusta al cliente a lo que dice el instinto de su parte interesada sobre lo que les puede gustar/disgustar a los clientes? ¿Ha experimentado un momento en que todos en su equipo se preguntan qué hacer y nadie parece estar interesado en el producto? El circuito de retroalimentación Retroalimentación: tiene una connotación negativa, ¿verdad? En realidad, la retroalimentación es una reacción del entorno a nuestras acciones, y necesitamos analizar esta reacción para usarla en nuestro beneficio. Por lo general, esto no se sigue.

Si tienes miedo de Estados Unidos, todavía no estás lo suficientemente asustado

Si tienes miedo de Estados Unidos, todavía no estás lo suficientemente asustado

Los teócratas y los fascistas quieren una sociedad totalitaria, y están a punto de tener una Las ondas de choque reverberaron en todo el mundo. En mi pequeño café en una vieja ciudad europea, lleno de amigos, gente: "¿Realmente lo hicieron?" "¿Están locos?" "¿Qué va a pasar ahora?" "¡Dios mío!" En el parque, a la vuelta de la esquina, donde los perros dan vueltas en felices círculos de verano: “¡No puedo creerlo!” “¿Hay algo que los estadounidenses puedan hacer?” "¿Que pasa ahora?" ¿Que pasa ahora? Esa es la pregunta en la mente de todos.

Language