Sto avendo un semplice esempio di app qui:
di avere questo codice che gestisce le richieste dell'utente per ottenere un elenco di libri memorizzati in un database.
from .handlers import all_books
from flask import jsonify
@apps.route('/show/all', methods=['GET'])
@jwt_required
def show_books():
user_name = get_jwt_identity()['user_name']
books = all_books(user_name=user_name)
return jsonify(books), 200
e in handlers.py
ho:
def all_books(user_name):
db = get_db('books')
books = []
for book in db.books.find({'read_by':user_name}):
books.append(book)
return books
ma durante la scrittura di unit test ho realizzato che se utilizzo get_db()
in all_books()
sarebbe più difficile testare il metodo unitario.
quindi ho pensato che sarebbe stato il modo migliore.
from .handlers import all_books
@apps.route('/show/all', methods=['GET'])
@jwt_required
def show_books():
user_name = get_jwt_identity()['user_name']
db = get_db('books')
collection = db.books
all_books(collection=collection,user_name=user_name)
def all_books(collection,user_name):
books = []
for book in collection.find({'read_by':user_name}):
books.append(book)
return books
voglio sapere qual è il buon design da usare? avere tutto il codice facendo una cosa in un posto come il primo esempio o il secondo esempio è buono.
Per me il primo sembra più chiaro in quanto ha tutta la logica correlata in un unico posto. ma è più facile passare una raccolta falsa nel secondo caso per testare l'unità.