visual unitarias tutorial studio rails pruebas español ejemplo automatizadas unit-testing rspec puppet rspec-puppet

unit-testing - unitarias - rspec rails tutorial



Forma correcta de iniciar las pruebas de la unidad RSpec-títere (1)

Instale el PDK para su plataforma desde su página de descarga . Vuelva a crear el módulo usando pdk new module , y pdk new class , o siguiendo la guía .

Ahora, vengo a lo que probablemente sea el problema inmediato de tu código: tu código depende de un módulo de Puppet Forge, puppetlabs/concat pero no lo has hecho disponible. La plantilla del módulo PDK ya tiene preconfigurada puppetlabs_spec_helper para cargar accesorios para su módulo.

Para decirle a puppetlabs_spec_helper que lo obtenga, necesita un archivo .fixtures.yml con el siguiente contenido:

fixtures: forge_modules: stdlib: puppetlabs/stdlib concat: puppetlabs/concat

Tenga en cuenta que también necesita puppetlabs/stdlib , porque eso es una dependencia de puppetlabs/concat .

Si desea explorar más posibilidades de accesorios, consulte los documentos de puppetlabs_spec_helper .

Con todo esto en su lugar, e integrando las muestras de código y el contenido de prueba que ha publicado en los esqueletos de código inicial proporcionados por el PDLK, todas sus pruebas pasarán ahora cuando ejecute:

$ pdk test unit

Tenga en cuenta que he escrito todo sobre las tecnologías subyacentes, en una publicación de blog, que muestra cómo configurar Rspec-puppet y más desde cero ( ref ), y todavía parece ser la referencia más actualizada sobre este tema.

Para leer más sobre rspec-puppet en general, consulte el sitio oficial rspec-puppet docs .

He creado una clase simple de Puppet 4 y una prueba unitaria para touch metadata.json; rspec-puppet-init siguiente manera (después de ejecutar touch metadata.json; rspec-puppet-init en modules/test/ ):

# modules/test/manifests/hello_world1.pp class test::hello_world1 { file { "/tmp/hello_world1": content => "Hello, world!/n" } } # modules/test/spec/classes/test__hello_world1_spec.rb require ''spec_helper'' describe ''test::hello_world1'' do it { is_expected.to compile } it { is_expected.to contain_file(''/tmp/hello_world1'')/ .with_content(/^Hello, world!$/) } end

Puedo ejecutar con éxito la prueba unitaria ejecutando rspec spec/classes/test__hello_world1_spec.rb mientras rspec spec/classes/test__hello_world1_spec.rb en modules/test/ .

Ahora me gustaría pasar a una clase un poco más avanzada que utiliza código de otro módulo, a saber, concat (el módulo ya se ha instalado en modules/concat ):

# modules/test/manifests/hello_world2.pp class test::hello_world2 { concat{ "/tmp/hello_world2": ensure => present, } concat::fragment{ "/tmp/hello_world2_01": target => "/tmp/hello_world2", content => "Hello, world!/n", order => ''01'', } } # modules/test/spec/classes/test__hello_world2_spec.rb require ''spec_helper'' describe ''test::hello_world2'' do it { is_expected.to compile } # ... end

Cuando intento ejecutar esta prueba unitaria con rspec spec/classes/test__hello_world2_spec.rb mientras rspec spec/classes/test__hello_world2_spec.rb en modules/test , recibo un mensaje de error que incluye:

Error / error: se {is_expected.to compile} error durante la compilación: Error de evaluación: error al evaluar un enunciado de recursos, tipo de recurso desconocido: ''concat''

Sospecho que la causa raíz es que rspec no puede encontrar el otro módulo, porque no se le ha dicho un "modulepath".

Mi pregunta es esta: ¿cómo exactamente se supone que debo comenzar las pruebas unitarias, especialmente aquellas que requieren acceso a otros módulos?