From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../add-ons/sdk/tutorials/unit_testing/index.html | 127 +++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html (limited to 'files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing') diff --git a/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html b/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html new file mode 100644 index 0000000000..2e65659ed5 --- /dev/null +++ b/files/pt-br/mozilla/add-ons/sdk/tutorials/unit_testing/index.html @@ -0,0 +1,127 @@ +--- +title: Teste de unidade +slug: Mozilla/Add-ons/SDK/Tutorials/Unit_testing +tags: + - Add-on SDK + - JPM +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Unit_testing +--- +
+

Para seguir este tutorial você precisará ter conhecimento básico de jpm e ter seguido o tutorial de criação de módulos reutilizáveis.

+
+ +
+

Se você está migrando código de teste do cfx para o jpm, veja o guia de migração do cfx, em particular a seção loading modules from test code.

+
+ +

O SDK fornece um framework para ajudar a criar e executar testes de unidade para seu código. Para demonstrar como ele funciona nós escreveremos um teste de unidade para um módulo simples de codificação Base64.

+ +

Um módulo simples Base64

+ +

Em uma página web, você pode executar uma codificação Base64 e decodificação usando as funções btoa() e atob(). Infelizmente essas funções pertencem ao objeto window: uma vez que o objeto não está disponível no código principal do add-on, atob() e btoa() não estão disponíveis de qualquer forma. Então nós criaremos um módulo base64 para exibir estas funções da plataforma.

+ +

Para começar, crie um novo diretório, navegue para ele, e execute o jpm init. Agora crie um novo arquivo chamado "base64.js", e de lhe o seguinte conteúdo:

+ +
const { atob, btoa } = require("chrome").Cu.import("resource://gre/modules/Services.jsm", {});
+
+exports.atob = a => atob(a);
+exports.btoa = b => btoa(b);
+
+ +

Este código exporta duas funções, que chamamos btoa() and atob(). Para mostrar o módulo em uso, edit o arquivo "index.js" como segue:

+ +
var base64 = require("./base64");
+
+var button = require("sdk/ui/button/action").ActionButton({
+  id: "base64",
+  label: "base64",
+  icon: "./icon-16.png",
+  onClick: function() {
+    encoded = base64.btoa("hello");
+    console.log(encoded);
+    decoded = base64.atob(encoded);
+    console.log(decoded);
+  }
+});
+ +

Para executar esse exemplo você também terá que ter um ícone chamado "icon-16.png" salvo no diretório data do add-on. Você pode baixar este ícone: .

+ +

Agora o "index.js" importa o módulo base64 e chama suas duas funções exportadas. Se nós executarmos o add-on e clicarmos no botão, nós devemos ver a seguinte saída:

+ +
info: aGVsbG8=
+info: hello
+
+ +

Testando o módulo Base64

+ +

Navegue para o diretório test e delete o arquivo test-index.js. Em seu lugar crie um arquivo chamado test-base64.js com o seguinte conteúdo:

+ +
var base64 = require("../base64");
+
+exports["test atob"] = function(assert) {
+      assert.ok(base64.atob("aGVsbG8=") == "hello", "atob works");
+}
+
+exports["test btoa"] = function(assert) {
+  assert.ok(base64.btoa("hello") == "aGVsbG8=", "btoa works");
+}
+
+exports["test empty string"] = function(assert) {
+  assert.throws(function() {
+                  base64.atob();
+                },
+                "empty string check works");
+}
+
+require("sdk/test").run(exports);
+
+ +
+

Note que com o  jpm nós devemos dar o caminho exato do módulo base64.js.

+
+ +

Esse arquivo: exporta três funções, cada qual espera receber um único argumento que é o objeto assert. assert é fornecida pelo módulo test/assert e implementa o CommonJS Unit Testing specification.

+ + + +

Neste ponto seu add-on deve parecer com isto:

+ +
  /base64
+      /data
+          icon-16.png
+      package.json
+      README.md
+      index.js
+      base64.js
+      /test
+          test-base64.js
+
+ +

Agora execute o jpm --verbose test da pasta principal do add-on. Você deve ver algo como isto:

+ +
console.info: jpm-utest: executing './test/test-base64.test atob'
+console.info: jpm-utest: pass: atob works
+console.info: jpm-utest: executing './test/test-base64.test btoa'
+console.info: jpm-utest: pass: btoa works
+console.info: jpm-utest: executing './test/test-base64.test empty string'
+console.info: jpm-utest: pass: empty string check works
+
+3 of 3 tests passed.
+All tests passed!
+ +

O que aconteceu aqui é que o jpm test:

+ + + +

Obviamente, você não tem que passar a opção --verbose para o jpm se você não quiser; fazendo assim torna a saída mais fácil de ler.

-- cgit v1.2.3-54-g00ecf