Mind Share

Compartilhando know-how sobre desenvolvimento de software

Tratamento De Concorrência Em Aplicações Rails

| Comments

Em aplicações web, onde transações podem ocorrer simultaneamente, é necessário estar atento às situações onde a concorrência pode levar à violação da integridade dos dados da aplicação. Considere por exemplo uma aplicação que gerencia créditos e débitos, e que armazena o saldo pré-computado de uma conta.

Dependency Injection Em Ruby

| Comments

O padrão de projeto Dependency Injection se popularizou bastante entre desenvolvedores Java, por facilitar o teste de uma classe e seus colaboradores, ao remover dependências fortes entre eles. Mas este padrão pode ser globalmente aplicado em outras linguagens? Ou seria um indício de um defeito da linguagem?

Especificações De Views Com MiniTest

| Comments

As Views representam a Interface do Usuário de uma aplicação. Como tal, ficam sujeitas a frequentes mudanças, orientadas por preocupações de usabilidade, de estética ou mesmo de evolução de requisitos.

No Rails, as views normalmente são arquivos html contendo código Ruby focado em apresentar dados para o usuário. Via de regra, estes dados provêm de Models que foram recuperados por um Controller. Quando desenvolvemos de fora para dentro (outside-in development), as necessidades das views orientam o projeto dos controllers e models, levando a APIs mais consistentes e bem alinhadas com o comportamento desejado para a aplicação.

Tamanha a responsabilidade das Views, que elas não deveriam ser ignoradas nas atividades de teste. Este artigo ilustra uma abordagem para testar views e alguns pontos que o desenvolvedor deve estar atento quando escreve este tipo de teste.

Introdução à MiniTest

| Comments

O framework Ruby-on-Rails possui muitas facilidades para a escrita de testes de aplicações web. Historicamente, a API Test::Unit provê os recursos básicos, e muitas outras gems surgiram para complementar ou mesmo substituir o Test::Unit (vide RSpec, Shoulda, Mocha, etc).

Em 2010, a versão 1.9 do Ruby introduziu uma versão atualizada da Test::Unit, chamada MiniTest. Ao mesmo tempo que guarda retrocompatibilidade com o Test::Unit, a MiniTest introduz novos recursos à linguagem, sendo a principal delas uma DSL (Domain Specific Language) para escrever testes num estilo BDD (Behavior Driven Development), similar à sintaxe do RSpec.