我想使用不同的测试数据多次运行Jasmine测试,当任何测试失败时,应该可以容易地识别出特定的测试用例。
在NUnit测试框架中,这可以通过TestCase属性来实现。
我尝试将it块放在foreach块中,而测试显示,它们无法运行,如此处所示:
下面是我尝试过的实现:
/// <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");
});
});
});
答案 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);
});
});