module.html

来自「perl教程」· HTML 代码 · 共 154 行

HTML
154
字号
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../../displayToc.js"></script>
<script language="JavaScript" src="../../../tocParas.js"></script>
<script language="JavaScript" src="../../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../../scineplex.css">
<title>Test::Builder::Module - Base class for test modules</title>
<link rel="stylesheet" href="../../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>

<body>

<script>writelinks('__top__',3);</script>
<h1><a>Test::Builder::Module - Base class for test modules</a></h1>
<p><a name="__index__"></a></p>

<!-- INDEX BEGIN -->

<ul>

	<li><a href="#name">NAME</a></li>
	<li><a href="#synopsis">SYNOPSIS</a></li>
	<li><a href="#description">DESCRIPTION</a></li>
	<ul>

		<li><a href="#importing">Importing</a></li>
		<ul>

			<li><a href="#import">import</a></li>
			<li><a href="#import_extra">import_extra</a></li>
		</ul>

		<li><a href="#builder">Builder</a></li>
		<ul>

			<li><a href="#builder">builder</a></li>
		</ul>

	</ul>

</ul>
<!-- INDEX END -->

<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>Test::Builder::Module - Base class for test modules</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
  <span class="comment"># Emulates Test::Simple</span>
  <span class="keyword">package</span> <span class="variable">Your::Module</span><span class="operator">;</span>
</pre>
<pre>
  <span class="keyword">my</span> <span class="variable">$CLASS</span> <span class="operator">=</span> <span class="keyword">__PACKAGE__</span><span class="operator">;</span>
</pre>
<pre>
  <span class="keyword">use</span> <span class="variable">base</span> <span class="string">'Test::Builder::Module'</span><span class="operator">;</span>
  <span class="variable">@EXPORT</span> <span class="operator">=</span> <span class="string">qw(ok)</span><span class="operator">;</span>
</pre>
<pre>
  <span class="keyword">sub</span><span class="variable"> ok </span><span class="operator">(</span>$;$<span class="operator">)</span> <span class="operator">{</span>
      <span class="keyword">my</span> <span class="variable">$tb</span> <span class="operator">=</span> <span class="variable">$CLASS</span><span class="operator">-&gt;</span><span class="variable">builder</span><span class="operator">;</span>
      <span class="keyword">return</span> <span class="variable">$tb</span><span class="operator">-&gt;</span><span class="variable">ok</span><span class="operator">(</span><span class="variable">@_</span><span class="operator">);</span>
  <span class="operator">}</span>
  
  <span class="number">1</span><span class="operator">;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>This is a superclass for Test::Builder-based modules.  It provides a
handful of common functionality and a method of getting at the underlying
Test::Builder object.</p>
<p>
</p>
<h2><a name="importing">Importing</a></h2>
<p>Test::Builder::Module is a subclass of Exporter which means your
module is also a subclass of Exporter.  @EXPORT, @EXPORT_OK, etc...
all act normally.</p>
<p>A few methods are provided to do the <code>use Your::Module tests =</code> 23&gt; part
for you.</p>
<p>
</p>
<h3><a name="import">import</a></h3>
<p>Test::Builder::Module provides an <a href="../../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a> method which acts in the
same basic way as Test::More's, setting the plan and controling
exporting of functions and variables.  This allows your module to set
the plan independent of Test::More.</p>
<p>All arguments passed to <a href="../../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a> are passed onto 
<code>Your::Module-&gt;builder-&gt;plan()</code> with the exception of 
<code>import =</code>[qw(things to import)]&gt;.</p>
<pre>
    <span class="keyword">use</span> <span class="variable">Your::Module</span> <span class="string">import</span> <span class="operator">=&gt;</span> <span class="operator">[</span><span class="string">qw(this that)</span><span class="operator">]</span><span class="operator">,</span> <span class="string">tests</span> <span class="operator">=&gt;</span> <span class="number">23</span><span class="operator">;</span>
</pre>
<p>says to import the functions <code>this()</code> and <code>that()</code> as well as set the plan
to be 23 tests.</p>
<p><a href="../../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a> also sets the <code>exported_to()</code> attribute of your builder to be
the caller of the <a href="../../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a> function.</p>
<p>Additional behaviors can be added to your <a href="../../../lib/Pod/perlfunc.html#item_import"><code>import()</code></a> method by overriding
import_extra().</p>
<p>
</p>
<h3><a name="import_extra">import_extra</a></h3>
<pre>
    <span class="variable">Your::Module</span><span class="operator">-&gt;</span><span class="variable">import_extra</span><span class="operator">(\</span><span class="variable">@import_args</span><span class="operator">);</span>
</pre>
<p><code>import_extra()</code> is called by import().  It provides an opportunity for you
to add behaviors to your module based on its import list.</p>
<p>Any extra arguments which shouldn't be passed on to <code>plan()</code> should be 
stripped off by this method.</p>
<p>See Test::More for an example of its use.</p>
<p><strong>NOTE</strong> This mechanism is <em>VERY ALPHA AND LIKELY TO CHANGE</em> as it
feels like a bit of an ugly hack in its current form.</p>
<p>
</p>
<h2><a name="builder">Builder</a></h2>
<p>Test::Builder::Module provides some methods of getting at the underlying
Test::Builder object.</p>
<p>
</p>
<h3><a name="builder">builder</a></h3>
<pre>
  <span class="keyword">my</span> <span class="variable">$builder</span> <span class="operator">=</span> <span class="variable">Your::Class</span><span class="operator">-&gt;</span><span class="variable">builder</span><span class="operator">;</span>
</pre>
<p>This method returns the Test::Builder object associated with Your::Class.
It is not a constructor so you can call it as often as you like.</p>
<p>This is the preferred way to get the Test::Builder object.  You should
<em>not</em> get it via <code>Test::Builder-&gt;new</code> as was previously
recommended.</p>
<p>The object returned by <code>builder()</code> may change at runtime so you should
call <code>builder()</code> inside each function rather than store it in a global.</p>
<pre>
  <span class="keyword">sub</span><span class="variable"> ok </span><span class="operator">{</span>
      <span class="keyword">my</span> <span class="variable">$builder</span> <span class="operator">=</span> <span class="variable">Your::Class</span><span class="operator">-&gt;</span><span class="variable">builder</span><span class="operator">;</span>
</pre>
<pre>
      <span class="keyword">return</span> <span class="variable">$builder</span><span class="operator">-&gt;</span><span class="variable">ok</span><span class="operator">(</span><span class="variable">@_</span><span class="operator">);</span>
        <span class="operator">}</span>
</pre>

</body>

</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?