- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我已经尝试并试图让它发挥作用。 documentation充其量是简洁的:
resetExpectations(); - 重置所有请求预期,但保留所有后端定义。通常,当您想要重用 $httpBackend mock 的相同实例时,您会在多阶段测试期间调用 resetExpectations。
每次我的第二个请求被调用时,我的结果总是有第一个结果的数据。看看这个 fiddle http://jsfiddle.net/tbwn1gt0/2/我在第一次刷新后重置期望,然后设置新的期望/结果,然后再次刷新以产生不正确的数据。
// --- SPECS -------------------------
var url = '/path/to/resource';
var result = '';
describe('$httpBackend', function () {
it("expects GET different results in subsequent requests", inject(function ($http, $httpBackend) {
successCallback = function(data){
result = data;
}
// Create expectation
$httpBackend.expectGET(url).respond(200, 'mock data');
// Call http service
$http.get(url).success(successCallback);
// flush response
$httpBackend.flush();
console.log( result ); // logs 'mock data'
// Verify expectations
expect( result ).toContain('mock data'); // works as it should
// reset the expectations
$httpBackend.resetExpectations();
// set the fake data AGAIN
$httpBackend.expectGET(url).respond(200, 'doof the magic cragwagon');
// get the service AGAIN
$http.get(url).success(successCallback);
expect( result ).toContain('doof'); // does not work, result is original result
console.log( result ); // logs 'mock data'
}));
});
// --- Runner -------------------------
(function () {
var jasmineEnv = jasmine.getEnv();
jasmineEnv.updateInterval = 1000;
var htmlReporter = new jasmine.HtmlReporter();
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function (spec) {
return htmlReporter.specFilter(spec);
};
var currentWindowOnload = window.onload;
window.onload = function () {
if (currentWindowOnload) {
currentWindowOnload();
}
execJasmine();
};
function execJasmine() {
jasmineEnv.execute();
}
})();
我尝试过的其他事情包括添加一个带有 resetExpectations 的 afterEach(将每个请求放在一个新的 it 语句中)。以及一系列其他随机尝试。如果它试图将预期的 url 更改为非预期的内容,它就会出错——所以我知道请求至少是通过 httpBackend 处理的。
这是缺陷还是我实现不当?
最佳答案
.resetExpectations()
确实按预期工作,但您只是忘记刷新第二个 http 请求。
// set the fake data AGAIN
$httpBackend.expectGET(url).respond(200, 'doof the magic cragwagon');
// get the service AGAIN
$http.get(url).success(successCallback);
$httpBackend.flush(); // flush the second http request here
expect( result ).toContain('doof'); // does not work, result is original result
console.log( result ); // logs 'mock data'
JSFiddle 示例: http://jsfiddle.net/4aw0twjf/
附言。实际上,$httpBackend.resetExpectations()
对于您的测试用例不是必需的。
关于javascript - 如何实际重置 $httpBackend 期望值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25370273/
在阅读了有关我的应用程序的一些统计数据后,我发现更新 75% 的用户需要一个多月的时间。由于所有更新都非常重要,因此我提出了一个应用内警报,告诉用户有一个待处理的更新。 有一个包含实际应用版本 (18
我想知道 RSpec 中是否存在此功能。我在调查时似乎找不到任何结果。 我想做的是可以像这样在 Jest 测试中完成的事情: // This is a Jest expectation expect(
我正在使用 FakeItEasy 伪造一些 Entity Framework 调用,以确保正确映射一堆奇怪的遗留数据库表。 我需要断言,正在将具有匹配特定 DeliveryAddress 的发票的客户
我已经尝试并试图让它发挥作用。 documentation充其量是简洁的: resetExpectations(); - 重置所有请求预期,但保留所有后端定义。通常,当您想要重用 $httpBacke
概率密度和“手动”平均值的计算如下: 我将概率密度函数编码为: myfunc = 0 & x = 0.5 & x = 1 & x < 2, 0.8*(x-1), 0))) } 我知道 EV 是加权积分
我正在将一个模块混合到一个邮件程序中并将其添加为助手,以便在 View 中可以访问它。我需要测试是否从 View 中调用了正确的辅助方法(以便在电子邮件中包含跟踪像素),但 Rspec 似乎不起作用:
我需要一些解析 JSON 文件的帮助。我尝试了几种不同的方法来获取我需要的数据。下面是代码示例以及 JSON 数据的一部分,但是当我运行代码时,出现上面列出的错误。 JSON 中有 500K 行文本,
我想通过 API 从这个 url https://api.hooktheory.com/v1/users/auth 获取一些数据 我可以用 key 输入它,但是一旦我想请求一些数据,它就无法工作,因为
当我在 Ubuntu 16.04 上运行 python 脚本时,出现以下错误。 当我运行相同的代码但不确定哪个包未正确安装时,它在 Windows 上运行良好。 import subprocess i
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我是一名优秀的程序员,十分优秀!