Olá Matheus Lima, tudo bem?
Existem várias maneiras de fazer isso. A primeira, para testar a função getContacts dentro da tela Contato, você pode exportá-la como uma função independente, assim poderá chamá-la diretamente.
Primeiro, exporte a função getContacts diretamente:
import React from 'react';
import { View, Text } from 'react-native';
export function getContacts() {
return 'listar contatos';
}
export default function Contato() {
function novoContato(){
return 'cadastrando novo contato';
}
return (
<View>
<Text>Hello</Text>
</View>
)
}
Em seguida, você pode chamar a função getContacts diretamente no seu arquivo de testes:
import { getContacts } from './Contato';
describe('Testando a funcao "getContacts" dentro da tela Contato e se retorna dados', () => {
it('deve retornar "listar contatos"', () => {
expect(getContacts()).toEqual('listar contatos');
});
});
A segunda forma, se você não pode exportar a função getContacts diretamente, pode criar uma forma de acessá-la a partir do componente Contato, transformando ele em uma classe.
Uma forma de fazer isso é atribuir a função getContacts a um método de instância do componente. Dessa forma, você pode acessar a função a partir da instância do componente, assim como qualquer outro método de instância:
import React from 'react';
import { View, Text } from 'react-native';
export default class Contato extends React.Component {
getContacts() {
return 'listar contatos';
}
novoContato() {
return 'cadastrando novo contato';
}
render() {
return (
<View>
<Text>Hello</Text>
</View>
)
}
}
Em seguida, no seu arquivo de testes, você pode criar uma instância do componente Contato e acessar o método getContacts a partir da instância:
import Contato from './Contato';
describe('Testando a funcao "getContacts" dentro da tela Contato e se retorna dados', () => {
it('deve retornar "listar contatos"', () => {
const contato = new Contato();
expect(contato.getContacts()).toEqual('listar contatos');
});
});
Uma terceira maneira, se você precisa continuar usando uma função Contato como função, uma forma de acessar o método getContacts é atribuir a função a uma propriedade do componente. Dessa forma, você pode acessar a função a partir da propriedade do componente, assim como qualquer outra propriedade:
import React from 'react';
import { View, Text } from 'react-native';
export default function Contato() {
function getContacts() {
return 'listar contatos';
}
function novoContato() {
return 'cadastrando novo contato';
}
return {
getContacts,
novoContato,
render: () => (
<View>
<Text>Hello</Text>
</View>
)
}
}
Em seguida, no seu arquivo de testes, você pode acessar as funções getContacts e novoContato diretamente da propriedade do componente:
import Contato from './Contato';
describe('Testando a funcao "getContacts" dentro da tela Contato e se retorna dados', () => {
it('deve retornar "listar contatos"', () => {
const contato = Contato();
const { getContacts } = contato;
const result = getContacts();
expect(result).toEqual('listar contatos');
});
});
Lembrando que todos os testes foram feitos usando a biblioteca Jest.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!