<%
title = 'glossary'
description = 'Key terms used in mountebank'
%>

<% include ../_header %>

<h1>Lexicon</h1>

<p>mountebank exposes a considerable amount of power with only a few concepts, but knowing
what those concepts represent can greatly help in learning how to use the tool.</p>

<dl>
  <dt>imposter</dt>
  <dd>A server representing a test double.  An <em>imposter</em> is identified by a port and
  a protocol.  mountebank is non-modal and can create as many <em>imposters</em> as your test requires.</dd>

  <dt>stub</dt>
  <dd>A set of configuration used to generate a response for an <em>imposter</em>.  An <em>imposter</em>
  can have 0 or more <em>stubs</em>, each of which are associated with different <em>predicates</em>.</dd>

  <dt>predicate</dt>
  <dd>A condition that determines whether a given <em>stub</em> is responsible for responding.  Each
  <em>stub</em> can have 0 or more <em>predicates</em>.</dd>

  <dt>response</dt>
  <dd>The configuration that generates the response for a <em>stub</em>.  Each <em>stub</em> can have
  0 or more <em>responses</em>.</dd>

  <dt>response type</dt>
  <dd>Defines the specific type of configuration used to generate a response.  The simplest type is called
  <em>is</em>, and allows you to define the <em>imposter's</em> response directly.  mountebank also
  supports a <em>proxy</em> response type, which allows record-replay behavior, and an <em>inject</em>
  response type, which allows you to script mountebank responses.  Each <em>response</em> has exactly
  one <em>response type</em>.</dd>

  <dt>stub behavior</dt>
  <dd>Adds additional cross-cutting behavior to a response, for example by adding latency to the
  response or augmenting the response with more information.  A <em>response</em> can have zero
  or more <em>behaviors</em>, but only one of each type of <em>behavior</em>.</dd>

</dl>

<% include ../_footer %>
