我正在尝试使用量角器测试Angular Single Page应用程序。我需要先运行登录脚本。只有这样我才能转移到其他路线,因为路线变化时localStorage
中的令牌会被检查。
这种测试方法是否正确?在这种情况下,我需要先运行登录脚本。量角器是否允许控制spec文件顺序。
或者我应该通过在localStorage
中对令牌进行硬编码来独立运行每个脚本(我应该在每次测试之前独立登录api调用)。
我的登录脚本包含以下内容
it('Login with wrong email', function() {
})
it('Login with correct email', function() {
})
因此在运行Login with correct mail
之后,我将获得将存储在localStorage中的accessToken,我可以继续测试其他路由。这是正确的方法吗?如果不是如何通过端到端登录测试单个应用程序。
在量角器Style Guide中,它被称为
让您的测试彼此独立
因此,我应该在每次测试之前使用beforeAll, beforeEach
获取访问令牌并存储在localStorage中。在这种情况下,请解释我该怎么做。
非常感谢任何帮助。
感谢。
答案 0 :(得分:10)
正如量角器FAQs中所强调的那样,您可以在conf文件的self.memumorysearchlist = function (data, event) {
motherbord.length = 0;
var manufactureUrl;
selectManufacturer = $('#manufacturer').val();
selectChiplist = $('#model').val();
if (selectManufacturer !== "" && selectChiplist !== "")
manufactureUrl = "https://api.pcpartpicker.com/api/2015.1/part/category/list/?apikey=5612661951b24c58979b7bb372c2a1f0809e2dc9&part_type=motherboard" + "&m=" + selectManufacturer + "&c=" + selectChiplist;
$.ajax({
url: "services/MemoryFinderDataProvider.asmx/PcPartpickerList",
type: "POST",
data: "{ 'partlisturl' : '" + manufactureUrl + "'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
error: function (data) {
},
success: function (data) {
var obj;
var xmlDoc = $.parseJSON(data.d);
var xml1 = $(xmlDoc.parts);
for (var i = 0; i < xml1.length; i++) {
obj = {};
obj['label'] = xml1[i].name;
obj['value'] = xml1[i].slug;
motherbord.push(obj);
}
$("#search").autocomplete({
source: motherbord,
minLength: 0,
}).focus(function () {
$(this).autocomplete("search", "");
});
$(document).ready(function () {
$("#search").autocomplete("search", "");
});
}
});
$('#ui-id-1').css('height', '400px');
$('#ui-id-1').css('overflow', 'scroll');
}
部分指定登录代码。这是一个example。
您也可以在onPrepare
中实现此目的,但这会给您的测试脚本带来不必要的开销。改变localStorage是可能的,但不是在e2e测试的精神,因为很多可能会出错,而且你最终会想知道它是你的应用程序还是你的LS修改代码导致了这个。