Mock Dependencies in Unit-Tests mit TypeScript
typescript

Mock Dependencies in Unit-Tests mit TypeScript

In unserer Angular Anwendung KreditSmart nutzen wir zum Testen Karma, Jasmine angereichert mit Chai und Sinon. In vielen Komponenten- und Service-Tests versuchen wir die Abhängigkeiten zu mocken bzw. zu stubben. Das kann schon mal einige extra Zeilen Quellcode mit sich bringen. Beim Zugriff auf die Stubs möchten wir zudem gerne Codevervollständigung seitens der IDE oder des Editors beim Zugriff und Typsicherheit haben. Der Stub soll die gleichen Methoden wie der gemockte Service haben.

refactoring

Konsolidierung von Businesslogik mit Hilfe von ATDD und Feature Toggle

Wie viele andere Unternehmen, stehen auch wir immer wieder veraltetem Code gegenüber. Die Marktplatz-Unit der EUROPACE AG verantwortet u.a. die Webanwendung zur Beratung und Vermittlung einer Baufinanzierung, BaufiSmart. Viele Prozesse sind in diesem Produkt enthalten, so wie die Abbildung der Provisionen des Vermittlers am jeweiligen Ergebnis, um im Falle eines Antrags daraus die entsprechenden Zahlungsforderungen im Backendsystem zu erzeugen. Anwendungsfall Wie bei allen lebenden Softwareprodukten, verändern sich Anforderungen oder Sachverhalte. Das macht die Evolution der Software aus.

Contract Testing in Practice
contract-test

Contract Testing in Practice

Mit dem Einsatz von Micro Services gewinnt die Kommunikation über Schnittstellen an Bedeutung. In den letzten Jahren hat sich dabei der Einsatz von lose gekoppelten Technologien gegenüber binär gekoppelten Technologien durchgesetzt. Es stellt sich jedoch die Frage, wie die Kompatibilität der Schnittstellen getestet und sichergestellt werden kann. Für das Testen von lose gekoppelten Schnittstellen wurden folgende Ziele ausgerufen: Unabhängige Entwicklung von Client und Server Client und Server sollen sich unabhängig voneinander entwickeln können, solange die Änderungen weiterhin kompatibel sind, d.

bugs

JavaScript Forensics by Todd Gardner at Hypoport (Sep. 24th !!!)

Todd Gardner of TrackJS will be at Hypoport THIS Thursday Sep. 24th. Abstract Something terrible happened here. Traces of errors litter the floor; memory leaking from cracks in the ceiling. Someone lost their object context in the corner. Everything reeks of jank. In this session, a JavaScript error tracking expert breaks down a series of common and complex crimes against web applications. You’ll leave the session armed with techniques and tools to detect, diagnose, and fix your JavaScript web applications.

  • leif
    leif
continuous-integration

Nie wieder Monolithen! Micro Services in der Praxis.

Bei der Hypoport AG haben wir bereits drei verschiedene Modularisierungsinkarnationen erlebt. Jede Inkarnation brachte uns näher an das Ideal einer flexiblen, wartbaren Architektur. Und dennoch stellten wir nach wenigen Jahren der Produktweiterentwicklung wieder fest: Die Anwendung ist voll von unbeabsichtigter Komplexität, Innovationen sind nur schwer möglich und die Umsetzung von Funktionalität dauerte kontinuierlich länger. Der Micro-Service-Architekturstil verheißt durch die Zerlegung eines Systems in kleine, unabhängige Services nachhaltige Besserung. Wir haben’s ausprobiert und sind begeistert.

  • ghostadmin
build-tools

Running Multiple Local Tomcats with Cargo and Gradle

We are currently using Cargo in combination with Gradle to implement consumer based tests for one of our projects. In order to do so, we created a Gradle script to deploy a service web app into a Tomcat container via Cargo and pass its URL to our consumer test suite. As long as we run the build script locally, everything works fine. But we noticed that it failed every once in a while when running on certain build agents in our TeamCity build pipeline.

angular-scenario

An AngularJS Test Pyramid

As a team with a strong taste for automated testing we focused from the beginning on how to test our Angular app. In this post we want to describe our different types of tests and how they form a Test Pyramid. Level 4: Selenium Tests. Level 3: E2E (Scenario) Tests. Level 2: Directive Tests. Level 1: Unit Tests. For each kind of test, we will explain the following aspects: Purpose: What’s the idea behind this type of tests.

  • andihypo
angular-scenario

Introduction to an Angular Scenario DSL for Remote Node Backend Configuration

This post was written by Andreas Marek (@andimarek) and Daniel Bechler (@SQiShER). In this article we’d like to introduce you to a library called node-config-ngscenario-dsl, which is our solution for advanced E2E testing with AngularJS and Node. This article may be interesting for you, if you are looking for a way to configure your Node backend right from your E2E tests. We are currently developing our first project with AngularJS. It’s a new module in a larger application and consists of an AngularJS frontend and a Java backend.

  • andihypo
dumbster

Verwendung eines SMTP-Servers in Unit-Tests

Im Rahmen von Unit-Tests möchte man die Anbindung externer Systeme vermeiden um Stabilität der Tests zu gewährleisten. Leider hat man genau dann Probleme, wenn man gerade diese Anbindung oder die Integration mit externen Systemen testen möchte. Für solche Unit-Test mit integrativem Charakter kann man Mocks verwenden, die recht spezifisch für den jeweiligen Anwendungsfall selbst implementiert werden. Wenn es allerdings an die Implementierung eines Mail-Server Mocks geht, ist der Aufwand der Eigenimplementierung oft nicht mehr gerechtfertigt.

automatisches-tests

Unit- und Integration-Test eines MicroService mit Maven

Was ist ein MicroService? In unserem Kontext ist es ein (kleines) Modul der Gesamtanwendung, welches seinen Dienst als Webapplikation (.war) anbietet. Das konkrete Schnittstellen-Protokoll ist für diesen Artikel nicht entscheidend. Möglich ist klassisch SOAP, REST aber auch Spring HttpInvoker. Ein MicroService ist eine gute Möglichkeit Sollbruchstellen in die Gesamtanwendung einzubauen. Nun zum eigentlichen Thema: Wie teste ich einen solchen Service? Im Grunde wie immer, d.h. viele Unit-Tests und ein paar ausgewählte Integration-Tests.

  • leif
    leif
modeling

What’s a Test? Seriously!

Well, we all know what testing means. You have created something and now you check whether or not it meets your expectations. You will find some tasks and perform them using this newly created “Something”. Then you will see and validate whether this “Something” performs well. Maybe you will find that your creation is perfectly suited to perform your tasks or maybe it has missed the goal completely; or maybe it breaks in the middle of the process or shows other defects which hinder you from performing your tasks.

  • ghostadmin