NodeJS, Express и ejs; почему тест не проходит, а представление работает? - PullRequest
0 голосов
/ 05 августа 2020

Я работаю над курсом / проектом PluralSight по NodeJs и Express. У них есть шаблон проекта с тестами. Приложение работает, оно фактически находит и отображает представление. Но тест на установку каталога представлений не работает. Я пробовал много вариантов каталогов для представлений, с символом «/» после «/ views» и без него; Я также пробовал много вариантов использования path.join(__dirname, './src/views'). Кажется, ничто не удовлетворяет тесту, даже когда я пытался использовать те же значения в тесте, что и в app.set('views', path.join(__dirname, '../../src/views')) Ничто не удовлетворяет тесту.

Тесты запускаются с npm run test:module1. Когда это запускается, в консоли появляется строка: mocha --exit './test/module1/*.spec.js' Тест определенно находит приложение, потому что оно запускает 8 тестов; 7 проходит, и только этот не срабатывает.

Но я пытаюсь заново выучить современные JS, а также Express и e js, поэтому мне может не хватать чего-то базового c .

Вот мое приложение. js код:

const fs = require('fs');
const path = require('path');
const express = require('express');

const app = express();

app.set('views', './src/views');
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, '/public/')))

app.get('/', function(req, res) {
  res.render('index', { title: 'Index'});
})

app.listen(3000, function() {
  console.log('PS Project Running on port 3000!');
});

и их соответствующий тест:

const path = require('path');

describe('View engine and directory', () => {
  it('should set view engine and directory @app-set-views-directory-engine', () => {
    assert(typeof app === 'function', '`app` const has not been created in `app.js`.');
    assert(app.settings['view engine'] === 'ejs', 'The view engine has not been set to `ejs`.');
    assert(app.settings.views === path.join(__dirname, '../../src/views'), 'The view directory has not been set to the `views` directory.');    
  });
});
...