아래는 casperjs와 mockjax를 사용하는 코드입니다. 그러나, mockjax는 ajax 호출을 인터셉트 할 수 없습니다. 모의 응답 대신 ajax 응답을 반환합니다. 또한, $ .mockjax.mockedAjaxCalls(). length 이것은 아무것도 인쇄하지 않습니다. 내가 여기서 뭘하고 있는지 알 겠어?MockJAX가 CasperJS에 응답하지 않습니다
실제로 외부 평가 컨텍스트가 아닌 $ .mockjax.mockedAjaxCalls() 값을 인쇄 할 수있는 방법이 있습니까? mock4.png에 mockjax 콜백이 발생하지 않았 음을 나타내는 스크린 샷이 표시됩니다.
var casper = require("casper").create({
verbose: true,
logLevel: 'error',
clientScripts: ["jquery.mockjax.js", "jquery.js", "json2.js"]
});
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.start('http://xyz:9000/abc', function() {
this.evaluate(function() {
this.capture('1.png')
$.mockjax({
url: '/foo1',
responseTime: 100,
dataType: 'json',
responseText: {
sessionTimeoutRedirectUrl: "https://foo/hello",
errorCode: "error.session.timeout"
}
});
});
this.capture('xyz123.png');
});
casper.waitForSelector('#order-wrapper', function() {
this.click('#method-field-cc');
this.capture('mock2.png');
});
casper.waitForSelector('#cc-card-number', function() {
this.capture('mock.png');
this.fillSelectors('form[id="cc-form"]', {
'input[id="cc-card-number"]': '4112344112344113',
'input[id="cc-first-name"]': 'first',
'input[id="cc-last-name"]': 'last',
'select[id="cc-expiry-month"]': '10',
'select[id="cc-expiry-year"]': '2016',
'input[id="tax-field-postal-code"]': '95051',
'input[id="cc-security-code"]': '123'
}, true);
this.click('#review-newcc');
this.capture('mock3.png');
});
casper.wait(1000, function() {
this.echo("I've waited for a second.");
casper.evaluate(function() {
this.echo("I've waited for a second." + $.mockjax.mockedAjaxCalls().length)
console.log($.mockjax.mockedAjaxCalls());
});
});
casper.evaluate(function() {
this.echo("I've waited for a second." + $.mockjax.mockedAjaxCalls().length)
});
casper.wait(1000, function() {
this.capture('mock4.png')
});
casper.run();
URL : '/ foo1'을 (를) 치려고하는 위치가 표시되지 않습니다. Mockjax는 URL (및 기타 아약스 설정)과 일치하는 요청만을 보낸다. – jakerella