为什么Rails / RSpec无法渲染&在测试?

时间:2017-02-20 10:50:00

标签: ruby-on-rails rspec actionmailer

我有一个邮件。并查看该邮件。在预览中,一切 看起来很好,链接正确呈现。

问题在于编写规范(RSpec)。当我尝试测试某些链接的存在时,测试失败,因为'&'测试中未正确显示链接中的&符号:

我测试的内容(以及邮件预览中显示的内容):

https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890

测试失败时我在测试输出中看到的内容:

https://nolp.dhl.de/nextt-online-public/set_identcodes.do?lang=de&idc=1234567890

那么,我怎么能理解呢? 为什么邮件在预览和测试中的解释方式不同? 我该怎么测试呢?

2 个答案:

答案 0 :(得分:1)

测试输出转义为html。您也可以将您的期望转换为转义的html:

 <table class="table table-bordered" style="border-color:black;">
                            <tr class="border-black">
                                <th class="text-center">
                                   <h3> Bulletin de paie </h3>
                                </th>
                                <th class="text-center" align="center">
                                    Adresse 
                                    <br></br>
                                    <span t-field="o.adresse"/> 
                                </th>
                                <th class="text-center" align="center">
                                    Date de paie 
                                    <br></br>
                                    <span t-field="o.datedepaie"/> 
                                </th>
                            </tr>
                            <tr bordercolor="black">
                                <th class="text-center">
                                    <strong>Matricule</strong>
                                    <br></br>
                                    <span t-field="o.matricule"/>
                                </th>
                                <th class="text-center">
                                    <strong>Nom et Prénom</strong>
                                    <br></br>
                                    <span t-field="o.name"/>
                                </th>
                                <th class="text-center">
                                    <strong>CNSS</strong>
                                    <br></br>
                                    <span t-field="o.cnss"/>
                                </th>
                            </tr>
                            <tr bordercolor="black">
                                <th class="text-center">
                                    <strong>Date de naissance</strong>
                                <br></br>
                                    <span t-field="o.datenaissance"/>
                                </th>
                                <th class="text-center">
                                    <strong>Date d'embauche</strong>
                                    <br></br>
                                    <span t-field="o.dateembauche"/>
                                </th>
                                <th class="text-center">
                                    <strong>Fonction</strong>
                                    <br></br>
                                    <span t-field="o.fonction"/>
                                </th>
                            </tr>

                        </table>

                        <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>Libellé</th>
                        <th>Base</th>
                        <th>Taux (%)</th>
                        <th>Gains</th>
                        <th>Retenues</th>

                    </tr>
                </thead>
                <tbody class="invoice_tbody">
                    <tr t-foreach="o.salaire_id" t-as="l">
                        <th><span t-field="l.libelle"/></th>
                        <th><span t-field="l.base"/></th>
                        <th><span t-field="l.taux"/></th>
                        <th><span t-field="l.gains"/></th>
                        <th><span t-field="l.retenues"/></th>
                    </tr>
                    <tr>
                                <th colspan="3" class="text-right">
                                <strong>Total</strong>
                                </th>
                                <th class="text-center">
                                    <span t-field="o.total"/>
                                </th>
                                <th class="text-center">    
                                    <span t-field="o.totall"/>
                                </th>
                    </tr>
                    <tr>
                                <th colspan="5" class="text-right">
                                    <strong>Net à payer:</strong>
                                    <span t-field="o.net"/>
                                    <br></br>
                                </th>
                    </tr>
                </tbody>
            </table>

                    </div>
                 </div>
                  <div class="footer">

答案 1 :(得分:0)

尝试使用CGI.escapeHTML()

我遇到了同样的问题,&变成了&amp;

您可以尝试使用CGI.escapeHTML()来尝试转义HTML,并将与符号&之类的字符转换为HTML代码&amp;

it { is_expected.to include CGI.escapeHTML( expected_link ) }