茉莉花中的测试用例。是否可以对多个不同的数据集运行相同的测试?

时间:2019-07-10 15:40:31

标签: javascript jasmine

我想使用不同的测试数据多次运行Jasmine测试,当任何测试失败时,应该可以容易地识别出特定的测试用例。

在NUnit测试框架中,这可以通过TestCase属性来实现。

我尝试将it块放在foreach块中,而测试显示,它们无法运行,如此处所示:

enter image description here

下面是我尝试过的实现:

/// <reference path="../Jasmine/jasmine.js"/>
/// <reference path="../Jasmine/jasmine-html.js"/>
/// <reference path="../../Site/wwwroot/lib/jquery/dist/jquery.js"/>
/// <reference path="../../Site/wwwroot/js/nlHoldem.js"/>

describe("nlHoldem.js", function () {
    var mockHtml;

    var deckOfCards = [
        { id: 'ace-of-spades' },
        { id: 'king-of-spades' }
    ];

    beforeEach(function () {
        mockHtml = getMockHtml();
        $(document.body).append(mockHtml);
        nlHoldem.init();
    });

    afterEach(function () {
        $('#mock-html-container').remove();
        sessionStorage.clear();
    });

    deckOfCards.forEach(function (card) {
        it("should add styling of top -5px to "+ card.id +" on mouseover", function () {
            // Arrange
            var targetCard = $("#" + card.id);

            // Act
            targetCard.mouseover();


            // Assert
            expect(targetCard.css("top")).toBe("-5px");
        });
    });
});

1 个答案:

答案 0 :(得分:1)

如果要在for循环中显示哪个特定的测试用例失败(如@ruby_newbie所示,在it块内部),则可以添加自定义失败消息,如下所示:

it("should add styling of top -5px to card on mouseover", function () {
    deckOfCards.forEach(function(card) {
        // Arrange
        var targetCard = $("#" + card.id);

        // Act
        targetCard.mouseover();


        // Assert
        expect(targetCard.css("top")).toBe("-5px", "failed on: " + card.id);
    });
});