У меня есть следующая функцияИспользование шпиона и Sinon JS
function trim(value) {
if (typeof value === 'string') {
if (String.prototype.trim) {
value = value.trim();
} else {
value = value.replace(/^\s+|\s+$/g, '');
}
return value;
}
}
Я пишу модульный тест для того, чтобы гарантировать, что когда trim
называется родной String.prototype.trim
называется, если доступно. Я пытаюсь использовать шпиона, чтобы убедиться, что она называется
var Util = require('test/util/methods');
it('should use native trim', function() {
var spy = sinon.spy(String.prototype, 'trim');
Util.trim('test string ');
expect(spy.calledOnce).toEqual(true);
expect(Util.trim('test string ')).toEqual('test string');
spy.restore();
});
Но что я чувствую, что я должен делать то, что, когда trim
называется я должен проверить, что String.prototype.trim
называется также.
Как я могу это сделать? если у кого есть какие-либо указатели, пожалуйста, также советуют, как я хочу, чтобы получить сторону тестирования его, как лучше я могу
Благодаря
Можете ли вы объяснить, что вы подразумеваете под «функция вызывается и называется« String.prototype.trim' »? Вы вызываете функцию в тесте, так что это, очевидно, называется, нет? Вы хотите сказать, что хотите протестировать не-родную реализацию? –
Извинения за путаницу, я просто хочу проверить, что 'String.prototype.trim' вызывается (если он доступен), что я и делаю сейчас (шпионаж на' String.prototype.trim'). но что, если я хочу следить за 'trim' и гарантировать, что' String.prototype.trim' вызывается впоследствии? Имеет ли это смысл ? – Richlewis
IMO, порядок сборки в модульные тесты не всегда является хорошей идеей. Это делает тесты довольно хрупкими, когда вещи меняются позже. Однако я все еще не совсем понимаю. Вы хотите увидеть, вызывается ли 'Util.trim' до' String.prototype.trim'? –