Прежде всего, Object
не имеет функции filter
, а ваш jasmine.createSpyObj
буквально бесполезен. Как говорит @Luan Phan в своем ответе, мы обычно тестируем входное и выходное значение для функции.
Однако, если вы хотели бы знать, например, если Object.keys
был вызван внутри вашей функции, вот пример
g3]
it('should func', function () {
spyOn(Object, 'keys').and.callThrough();
$scope.filterData(data, allowedKeys);
expect(Object.keys).toHaveBeenCalled();
});
То же самое можно сделать для остальных встроенных функций, используемых в filterData
it('should func', function () {
spyOn(Object, 'keys').and.callThrough();
spyOn(Array.prototype, 'filter').and.callThrough();
spyOn(Array.prototype, 'reduce').and.callThrough();
$scope.filterData(data, allowedKeys);
expect(Object.keys).toHaveBeenCalled();
expect(Array.prototype.filter).toHaveBeenCalled();
expect(Array.prototype.reduce).toHaveBeenCalled();
});
Если вам действительно нужно mock что одна из встроенных функций возвращается, вот пример
it('should func', function () {
const mockResult = {};
spyOn(Array.prototype, 'reduce').and.returnValue(mockResult);
const result = filterData(data, allowedKeys);
expect(result).toBe(mockResult);
});
Опять же, встроенные функции Javascript уже имеют тесты, написанные в в другом месте , мы не знаем, t нужно проверить его в нашем тесте, мы должны сосредоточиться на функциях, которые мы пишем.
Надеемся, что это поможет
Трудно заставить почту работать на локальном хосте по разным причинам, которые включают в себя неправильную настройку SMTP-сервера.
Я бы предложил сначала протестировать с sendmail и проверить, работает ли он - если это не сработает, то я бы предложил перейти к тестированию локального SMTP-сервера с помощью telnet. Возможно, у вас проблемы с сетью, из-за которых необходимые порты недоступны из-за вашего интернет-провайдера. Насколько я знаю, некоторые интернет-провайдеры блокируют эти порты специально, чтобы помочь уменьшить спам.
Одним из возможных решений может быть настройка PHP для использования внешнего SMTP-сервера, такого как Google, через файл конфигурации php (php.ini).
Лучшее решение, на мой взгляд, это получить общий хостинг или VPS и использовать его для разработки.